質問: EXCELのセル計算式とVBAの計算式の違いについて セルB41に 10音楽 セルC41に 10工芸 セルD41に =B41>C41 と入力したらD41は FALSEになりました。
回答: > なにか違う計算をしているのでしょうか。 まぁ、「計算違い」というよりVBAで扱う文字コードの違いと思います。 まず、=B41>C41 のように セルに設定した数式で、「文字列を比較」する場合は、 その文字列の漢字コードで比較します。 JISコードやShift-JISの場合の漢字は、その音読み順に並んでいます。 "10"は、両方同じで続く"音楽(オンガク)" と工芸(コウゲイ)では 音(JIS 3241) > 工(JIS 3929)ですので False になります。 ところが、VBAでの文字コードは、Unicodeが、使われていて 漢字の音読み順の並びにはなっていないのです。 > VBAでセルD41と同じ結果が欲しいです。 VBAで Range("B41") > Range("C41")の結果をワークシートの数式と 同じにするのであれば、こんな感じにすればいいかと思います。 モジュールの先頭(宣言エリア)に文字の比較をテキストで行うように Option Compare Text を指定します。 これで、如何でしょうか。 Option Explicit Option Compare Text Sub test() MsgBox Range("B41").Value > Range("C41").Value End Sub