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

Excel(2002)のワークシートの数式で文字列を比較するとき
半角英字の大文字と小文字が区別されないようなのですが、
区別するためにはどうしたらよいのでしょうか。

※任意のセルで ="a"="A" とすると TRUE が帰ってくる。Countif などの動作も同様。
※VBAでは次のコードを実行すると FALSE が表示される。
Sub compare()
If "a" = "A" Then
MsgBox "TRUE"
Else
MsgBox "FALSE"
End If
End Sub

カテゴリ違いかもしれません。とすれば申し訳ありません。よろしくおねがいします。

A 回答 (5件)

#1です。


COUNTIF じゃないけど、A1:A8に

aab
aAb
aab
Abb
AAB
AaB
AAb
aab

と入っている場合、=SUMPRODUCT((EXACT(A1:A8,"aab"))*1) で 3 が返ります。
    • good
    • 1
この回答へのお礼

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

お礼日時:2005/12/30 12:06

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/30 12:08

VBAが大文字と小文字を区別しないのは、そういう仕様だからです。


"a"と"A"は、便宜的に対応しているだけで文字コードとしては"A"と"B"みたいなものです。

If Upper("a") = "A" Then

という書き方を知りたいのでしょうか?

この回答への補足

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

補足日時:2005/12/29 23:57
    • good
    • 0

(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のコードの部分が等価といえるのでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/30 12:04

Excel2000だと



=EXACT("a","A") は False
=EXACT("A","A") は True

が返ります。

この回答への補足

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

補足日時:2005/12/29 23:51
    • good
    • 0

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