人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Excelの質問】セルのA1に、適当な文字列をいれます(例:ほえほえ)
セルのB1に、「=if(A1>1,”○”,”×”)」と入力します。

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

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

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

●質問者: noface
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:A1 Excel エラー サイト セル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● flashcafe
●20ポイント

http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_050_08.html

VBA基本(データの型変換)

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

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

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

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


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

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

◎質問者からの返答

ありがとうございます。


2 ● Setiablue
●20ポイント

http://0ban.com/araken/qxhelp/m_asc.htm

asc

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

◎質問者からの返答

ありがとうございます。


3 ● aki73ix
●20ポイント

http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page16.htm

データ比較・抽出

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

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


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


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

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


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

=ifを使わなくても直接


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

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ