例えば0001の前に「’」をつけると、0001って文字列になりますよね。
で、A1に「0001」って表示されて、オートフィルを使ってドラッグすると
A2以降に0002~の番号がふられます。(今回はA1:A10に0001~0010まで
ふっているということで)
で、この0001とか0002って文字列のはずですよね。
なのにB1のセルに=A1+A2にするとちゃんと「3」て出てくるんですよ。
でも、COUNT関数でA1:A10を指定すると「0」が表示され、COUNTA関数で
A1:A10を指定すると「10」が表示されてるってことはやっぱA1:A10のデータ
は文字列ですよね。
他にもフィルタオプションで「>=’0005」(シングルクォーテーションは半角)
とかって指定してもちゃんと抽出されたりと、
この「’」をつけるというのは数値を完全に文字列にしているのでしょか?
ご存知の方教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは



 以下のページがご参考になるのでは?

[XL2000] 文字数値を数値に変換する方法
http://www.microsoft.com/JAPAN/support/kb/articl …

[XL2000] 数字を文字列として書式設定した場合の予期しない動作
http://www.microsoft.com/JAPAN/support/kb/articl …

[XL97] 数字を文字列として入力する方法
http://www.microsoft.com/japan/support/kb/articl …

[XL97] 表示形式を文字列から数値へ変更後も値が文字列の場合
http://www.microsoft.com/JAPAN/support/kb/articl …

参考URL:http://www.microsoft.com/JAPAN/support/kb/articl …
    • good
    • 0

Excelは、取り扱うデータ型について、よく言えば「融通がきく」、悪く言えば「厳密さに欠ける」ので、たとえセルの書式が文字であっても、演算子で指定された値が数値として認められるものであれば、自動的に内部で数値化して計算してくれるのです。


 
VBAなんかでいうと、データ型に「Valiant型」というのがあります。
このValiant型というのは、数値とも数字 (文字列) とも解釈できる値を変数が保持している場合でも、この変数に対して数値演算を正常に行うことができます。
たとえば、+ 演算子を使って数値データを保持している他のバリアント型変数や通常の数値型を持つ変数を Valiant型の値に加えると、その結果は 2 つの値の合計になります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSUMPRODUCT($A$1:$A$10,$B$1:$B$10)とSUMPRODUCT($A$1:$A$10*$B$1:$B$10)

エクセルのSUMPRODUCT関数についてお尋ねします。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?

Aベストアンサー

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。

こちらが、本来の使い方です。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。

では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)

とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)

ところが、こちらは、

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)

$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。

ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算...続きを読む

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QExcelでシート2のデータ(A1からA10)をシート1(A10からA1)に反映させるには・・・。

いつもお世話になっています(_ _)
シート2のデータ(A1からA10)をシート1の(A10からA1)(シート2は上からに対してシート1は下から上へ)データを反映(=のかたちでシート2と同じ数字がシート1のも入るように)したいのですが・・・。

わかりにくいですね・・・。
もし補足の要求があればすぐに書き込みますのでよろしくお願いします。

Aベストアンサー

こんにちは

コピーですむような者ですね。

=INDEX(Sheet2!$A$1:$A$10,11-ROW(),1)

をSheet1のA1セルからA10セルにコピーペーストして見てください。
もし、Sheet2の値が空白だった場合、Sheet1も空白にするのであれば、

=IF(INDEX(Sheet2!$A$1:$A$10,11-ROW(),1)="","",INDEX(Sheet2!$A$1:$A$10,11-ROW(),1))

で良いですね。

QエクセルでB列の数値がA列(A1:A10)の範囲に存在するかどうかを知りたい

こんばんは。
エクセルでこのようなことができるのかどうか分からないので、教えてください。

B列の数値がA列(A1:A10)の範囲に含まれる数値なら○、含まれない数値なら×と、C列に表示したいのですが、エクセルでそのようなことはできるのでしょうか。
できるのであれば方法を教えていただけますでしょうか。
よろしくお願いいたします。

<<最終的な結果は以下のように表示したいです>>

  A B C

1 12 19 ○

2 15 20 ○

3 19 28 ○

4 20 30 ×

5 23 34 ○

6 28 35 ×

7 32 38 ×

8 34 39 ○

9 39

10 40

Aベストアンサー

セル C1 に式 =IF(COUNTIF(A:A,B1),"○","×") を入力して、此れを下方にズズーッと複写

Qオートフィルで下に「Aシート!A1:A5」「=Aシート!A6:A10 」と続けさせたい

スプレッドシートで別のシートにあるセルを複数参照して、そこからオートフィルで数字を連続させたいです。

Bシートに「=Aシート!A1:A5」を入力して、AシートのA1:A5を参照します。

そこから「Aシート!A1:A5」を入力したセルの下に「=Aシート!A6:A10 」といった具合に数字を連続をさせたいのですが、オートフィルでは上手くいきません。手入力で、6~10、11~15とやっていくのには限界があります。
どうしたら連続させることができるでしょうか?

イメージは添付した画像です。

Aベストアンサー

=SUMPRODUCT(('Aシート'!A3:A12="果物"))の場合
3行目から10行飛び
=SUMPRODUCT((OFFSET(Aシート!A$3,(ROW(A1)-1)*10,,10)="果物"))
Offset関数
=OFFSET(基礎となるセル,何行すらす,何列ずらす,範囲とする行数,範囲とする列数)です。


人気Q&Aランキング

おすすめ情報