• ベストアンサー

Excel:文字列の比較:大文字と小文字の区別

Excel(2002)のワークシートの数式で文字列を比較するとき 半角英字の大文字と小文字が区別されないようなのですが、 区別するためにはどうしたらよいのでしょうか。 ※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。 ※VBAでは次のコードを実行すると FALSE が表示される。 Sub compare() If "a" = "A" Then MsgBox "TRUE" Else MsgBox "FALSE" End If End Sub カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

#1です。 COUNTIF じゃないけど、A1:A8に aab aAb aab Abb AAB AaB AAb aab と入っている場合、=SUMPRODUCT((EXACT(A1:A8,"aab"))*1) で 3 が返ります。

otasuke009
質問者

お礼

再度の回答ありがとうございました。 これで COUNTIF の 大文字小文字区別版が実現できるわけですね。よくわかりました。 今後ともよろしくお願いします。

その他の回答 (4)

noname#22222
noname#22222
回答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

otasuke009
質問者

お礼

再度の回答ありがとうございました。 >VBAが大文字と小文字を区別しないのは、そういう仕様だからです。 とあったのは、VBA -> EXCEL の間違いですね。 よくわかりました。今後ともよろしくお願いします。

noname#22222
noname#22222
回答No.3

VBAが大文字と小文字を区別しないのは、そういう仕様だからです。 "a"と"A"は、便宜的に対応しているだけで文字コードとしては"A"と"B"みたいなものです。 If Upper("a") = "A" Then という書き方を知りたいのでしょうか?

otasuke009
質問者

補足

ご回答ありがとうございます。 私の実験ではワークシート上の式では大文字小文字が区別されず、VBAでは区別されるという結果だったのですが、VBAも区別しない仕様なのでしょうか? その点がよくわかりませんでしたので、もしよければ再度解答いただけたらありがたいと思います。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

(1)Exactの使い方 例データA,B列 A a A A 1 a A 1 A a TRUE 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のコードの部分が等価といえるのでしょうか。

otasuke009
質問者

お礼

詳しく調べていただき、参考になりました ありがとうございました。 これからEXACT関数を活用したいと思います。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

Excel2000だと =EXACT("a","A") は False =EXACT("A","A") は True が返ります。

otasuke009
質問者

補足

早速の解答ありがとうございます。 質問の補足ですが、COUNTIF関数を使って大文字小文字を区別して比較したい場合は何か方法があるでしょうか?