Excel(2002)のワークシートの数式で文字列を比較するとき
半角英字の大文字と小文字が区別されないようなのですが、
区別するためにはどうしたらよいのでしょうか。
※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。
※VBAでは次のコードを実行すると FALSE が表示される。
Sub compare()
If "a" = "A" Then
MsgBox "TRUE"
Else
MsgBox "FALSE"
End If
End Sub
カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。
No.5
- 回答日時:
s_husky です。
質問者は、ソフトとプログラミング言語を混同されています。
例えば、AccessやExcel等はあくまでも一つのソフトです。こういうソフトでは、ユーザーの便宜から大文字と小文字を区別しなかったり、あるいは、オプションを設定することが可能です。
Excelの式は、Excelのソフト的性格を反映した仕様です。これに対し、VBAは'a'と'A'を区別しています。これは、VBAがプログラミング言語だからです。仮に、Excel固有の仕様にすると、AccessやWordのVBAも独自仕様ということになります。そういう事情で、ExcelVBAも一般的なプログラミング言語の仕様に準拠している訳です。
? Chr$(65) = Chr$(97)
False
? Chr$(65) & Chr$(97)
Aa
再度の回答ありがとうございました。
>VBAが大文字と小文字を区別しないのは、そういう仕様だからです。
とあったのは、VBA -> EXCEL の間違いですね。
よくわかりました。今後ともよろしくお願いします。
No.3
- 回答日時:
VBAが大文字と小文字を区別しないのは、そういう仕様だからです。
"a"と"A"は、便宜的に対応しているだけで文字コードとしては"A"と"B"みたいなものです。
If Upper("a") = "A" Then
という書き方を知りたいのでしょうか?
この回答への補足
ご回答ありがとうございます。
私の実験ではワークシート上の式では大文字小文字が区別されず、VBAでは区別されるという結果だったのですが、VBAも区別しない仕様なのでしょうか?
その点がよくわかりませんでしたので、もしよければ再度解答いただけたらありがたいと思います。
No.2
- 回答日時:
(1)Exactの使い方
例データA,B列
Aa
AA1
aA1
AaTRUE
C1は
=IF(EXACT(A1,B1),1,"")
C2はC1の式を複写
(2)>="a"="A" とすると TRUE が帰ってくる
はどういう使い方なのでしょうか?実務で、こんな使い方したことがない。
http://www.relief.jp/itnote/archives/001200.php
の程度のことは知っていますが。
="a"="A"がTRUEになる理由は、それはそれで説明が必要でしょうが、すみません、説明する知識なし。="aA"="AA"でもTRUEになる。
上記のC3は
=IF(A3=B3,1,"")と入れると、1となりました。
C4は
=A4=B4
を入れてTRUEとなりました。
=CHAR(66)=CHAR(98)でもTRUEになりました。
何かツールーオプションなどでも設定がないか調べたが、見つけられずたぶん関係ない。
(3)
Sub compare()
If "a" = "A" Then
MsgBox "TRUE"
Else
MsgBox "FALSE"
End If
End Sub
はおっしゃる通りの結果になりました。
しかし ="a"="A"
とVBAのIFのコードの部分が等価といえるのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
違法コピーはどうやってバレる?
-
aomei というソフトについて
-
hotmailのドメインを教えて下さい
-
hotmail.comと@hotmail.co.jp
-
フォートナイト エラー
-
AI生成アプリについて
-
拡張子がdwg,dcc、dxfを開く...
-
viewer=ビューア?ビューワー?
-
DTMソフト
-
互換性ソフトとは?なんですか?
-
hp作成ソフト ダウンロードして...
-
ディーエルソフトでソフトを購...
-
Switch ゲームソフト
-
ソフト弁とは?
-
outlook.jpの使い方
-
Returned mail: see transcript...
-
アプリケーションが正しくフォ...
-
CPUの累積使用時間を測定するソ...
-
洗濯機 ソフト仕上剤・洗剤投...
-
みつも朗ってソフトはなにがで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
違法コピーはどうやってバレる?
-
hotmail.comと@hotmail.co.jp
-
フォートナイト エラー
-
ソフトが正常に動作しなくなっ...
-
Returned mail: see transcript...
-
日本語版Windowsで英語のソフト...
-
Windows用のソフトをダウンロー...
-
@live.jpと@hotmail.co.jpの違いは
-
viewer=ビューア?ビューワー?
-
ドキュワークスのようなソフト...
-
再起動で初期状態に戻る、ネッ...
-
ソフト弁とは?
-
aomei というソフトについて
-
機械工学科よりも情報工学科の...
-
体験版試用期限のリセットをしたい
-
職場で使えないのに使わざるを...
-
みつも朗ってソフトはなにがで...
-
hp作成ソフト ダウンロードして...
-
Malwarebytesを解約したいので...
-
既存のファイル名の前に連番が...
おすすめ情報