- ベストアンサー
Excelのセルの比較について
- Excelのマクロにてセルの比較を行う方法について解説します。
- セルの表示形式が異なる場合にも正しく比較する方法をご紹介します。
- セルの値を比較する際には、Valueプロパティを使用すると便利です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 結局の所、文字列と数値を比較している事が原因の様に思えます。 .Valueではなく、.Textで文字列同士を比較するか、一旦どちらもlong型にでも変換して比較すれば良いのではないでしょうか。 If Range("A1").Text <> Range("A2").Text Then MsgBox "同じではない" Else MsgBox "同じ" End If Excelは型に拘らずに演算や比較が出来てしまう場合が多いですが、時々こんな事があります。
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
A1という変数に"A1"、A2という変数に"A2"が入っていると言うことなのでしょうか? >If Range(A1).Value <> Range(A2).Value Then → If Range("A1").Value <> Range("A2").Value Then ということではないのかなぁ? 試しに、MsgBox(Range(A1).Value & " / " & Range(A2).Value) とでもしてみれば、状況がわかると思いますが…
補足
書き込みありがとうございます。 申し訳ございません。 質問内容が分かりやすくする為、簡略化して記述したのですが記述ミスでした。 実際の比較式は繰り返し比較をしています。 Public row As Double '行数カウント用 Public colum As Integer '列数カウント用 (中略) '比較条件↓ If Range(ColumnNumToColumnName(colum) & row).Value <> Range(ColumnNumToColumnName(colum - 1) & row).Value Then (終略) '列番号を列名に変換 '引数:列番号 Public Function ColumnNumToColumnName(ColNum As Integer) As String Dim ColumnName As String '列の範囲チェック(存在しない列番号の場合は、UnKnownを返す) If ColNum >= 1 And ColNum <= 256 Then ColumnName = Mid(Cells(1, ColNum).Address, 2, InStr(Cells(1, ColNum).Address, "1") - 3) Else ColumnName = "UnKnown" End If ColumnNumToColumnName = ColumnName End Function という書き方をしています。 >試しに、MsgBox(Range(A1).Value & " / " & Range(A2).Value) >とでもしてみれば、状況がわかると思いますが… 表示して見たところ If Range(ColumnNumToColumnName(colum) & row).Value <> Range(ColumnNumToColumnName(colum - 1) & row).Value Then MsgBox Range(ColumnNumToColumnName(colum) & row).Value & "/" & Range(ColumnNumToColumnName(colum - 1) & row).Value End If 123/123と表示されました。 あれれ・・・?
- mt2008
- ベストアンサー率52% (885/1701)
> A2をハイパーリンクに指定して"123"と表示しています。 ↑ 補足願います。 リンク先の別名を"123"と表示していると言うことでしょうか? その場合、別名は文字列になると思いますので表示形式で通貨を指定しても文字列のままだと思います。 できれば、A2にはどの様なリンクが貼られているのか示してください。
補足
説明が不足していて申し訳ございません。 >リンク先の別名を"123"と表示していると言うことでしょうか? はい、別名で"123"と表示しています。 >その場合、別名は文字列になると思いますので表示形式で通貨を指定しても文字列のままだと思います。 その通りだと思います。 混乱を招く書き方をしてしまい申し訳ございません。 この比較は元のファイルからコピーをしてハイパーリンクを張っているので元のファイルの表示形式をが通貨の為、通貨で表示しています。 比較対照が両方とも同じ形式で比較をしている事を記述する為に質問に入れました。 >できれば、A2にはどの様なリンクが貼られているのか示してください。 実際のコードだと分かりにくくなってしまう為、簡略化して記述してしまい申し訳ございません。 =HYPERLINK(CELL("address",INDEX([○○○.xls]XXX!$1:$65536,MATCH("*『条件』*",[○○○.xls]XXX!$B:$B,),MATCH("『条件2』",[○○○.xls]XXX!4:4,))),"123")
お礼
書き込みありがとうございます。 申し訳ございません。ま、まさかこんな簡単なことで・・・ お騒がせしました。ありがとうございます。