アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

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

A 回答 (1件)

こんばんは。



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

>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$ 関数で、一旦、文字にして日時で比較する方法もあります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/03/26 20:44

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