【Excelの質問】セルのA1に、適当な文字列をいれます(例:ほえほえ)

セルのB1に、「=if(A1>1,”○”,”×”)」と入力します。

すると、B1のセルの計算結果は「○」と表示されます。

また、セルB1の(条件式)に「A1*1>1」や「-A1>1」と入れると、
B1の結果は「#VALUE!」というエラー値が戻ってきます。

なぜ文字列と数字の論理式(条件式)の計算(評価?)が可能なのか、
また、なぜ「A1>1」の計算はできて、上記の例の類が不可なのか、
この仕様の根拠を示すサイトを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/11/14 20:11:37
  • 終了:--

回答(3件)

id:flashcafe No.1

flashcafe回答回数50ベストアンサー獲得回数02005/11/14 20:48:28

ポイント20pt

リンク先はこれとは直接関係ありません。

エクセルはBASICを引き継ぐものです。

BASICは文字列比較も数値比較も”>”によってできるという仕様であり、”文字列>数値”の場合はできるならば”数値>数値”に、できないならば”文字列>文字列”に変換して比較するという機能があります。

ここでは「=if(”ほえほえ”>”1”,”○”,”×”)」と等価です。


後者でエラーがでているのは、変換できるのは”数値>文字”の時であり”エラー>文字”ではないということです。

”文字列*1”はできる限り数値に変換しようとしますができない場合はエラーを吐くという仕様なので。

id:noface

ありがとうございます。

2005/11/14 21:09:00
id:Setiablue No.2

Setiablue回答回数122ベストアンサー獲得回数02005/11/14 21:03:17

ポイント20pt

これはアスキーコードの比較(文字には番号がふられている)で「ほ」のコードは1よりも大きいと判定されてます。ただ計算はできません。*とか+とかです

id:noface

ありがとうございます。

2005/11/14 21:10:54
id:aki73ix No.3

aki73ix回答回数5224ベストアンサー獲得回数272005/11/14 21:04:14

ポイント20pt

これは、VBAの strcompを実行した時の結果とほぼ同じです

どういうことかというと、セルの入力値が数値の場合は、数値として計算しますが、文字列の場合は、文字列の文字コードでの比較になります


例えば、”あいう” と ”お”だった場合、先頭の文字のコードが”お”の方が大きいので、短い文字列でも、”あいう”<”お”となります


途中まで文字列が同じだった場合、より後に大きい文字コードが来る方が大きくなります

途中で文字列が終わった場合は、長い方が大きくなります


不等号の場合は、単純に比較になりますが、-をつけると-1*A1を実行することになり、A1*1と同様、文字列に対して四則演算を行っていることになるのでエラーになるのです

=ifを使わなくても直接


=A1*1 > 1, =A1>A2 等として文字列を入れてみれば分かりやすいと思います

id:noface

ありがとうございます。

2005/11/14 21:33:45

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません