こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA 人の目には同じ数字に見えるのに、VBAは違う数字として判定してしまう

あるセルに1826.97792という数字が入力されており、
別のセルにも1826.97792と同じ数字が入力されています。

人間の目で見る限りまったく同じ数字です。
また、エクセル関数=if(・・・・・)で判定しても同じ数字という判定がでます。

しかしながら、VBAにて
if セル1=セル2 then
などとして比較すると、同じでないという判定結果になります。

どうしてこういうことが起きるのでしょうか?
また、プログラムを書くうえでの対処方法はどうすればいいのでしょうか?

ちなみに、数字は他の人が作ったファイルのもので、
改めて、手で入力しなおすと正しく判定されます。

投稿日時 - 2007-03-26 17:46:07

QNo.2867513

暇なときに回答ください

質問者が選んだベストアンサー

こんばんは。

この前、同様の内容の質問が出ていました。

>if セル1=セル2 then
>などとして比較すると、同じでないという判定結果になります。

おっしゃるとおり、そのままでは比較できません。

>1826.97792という数字が入力されており、別のセルにも1826.97792と同じ数字が入力されています。

これは、Double型です。Double型で、小数点が入っているので、無限小数が含まれていたりする可能性が高く、同じ数だと思っても違ってしまいます。(そのまま入力しても、入ることがあります)

その対処法は、
例えば、

Dim a As Double
Dim b As Long
Dim c As Double
Dim d As Long

 a = Cells(1,1).Value
 b = CLng(Fix(a * 100000))

 c = Cells(1,2).Value
 d = CLng(Fix(c * 100000))

というような、 方法で、一旦、小数点を固定してあげないと、比較できません。
なお、日付や時間値の場合は、Format$ 関数で、一旦、文字にして日時で比較する方法もあります。

投稿日時 - 2007-03-26 18:49:22

お礼

回答ありがとうございます。
色々確認した結果、やはり小数点以下何十桁あたりにごみが
あるみたいです。

投稿日時 - 2007-03-26 20:44:07

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問