- ベストアンサー
エクセルの関数でワイルドカードを使いたいのですが・・・
A列3行目から100行目までのセルで文字列○を含むものの合計は =COUNTIF(A3:A100,"*○*")で求めることが出来ますね。 同様にB列にも文字列○を含むセルをカウントする場合、 =COUNTIF(B3:B100,"*○*")で求められます。 では同じ行で、A列B列共に○を含むものを集計しようとして、C列に =IF(AND(A3="*○*",B3="*○*"),TRUE)とし、TRUEを合計しようとしたところすべてFALSEになってしまいました。 なぜワイルドカード(*)が使える場合と使えない場合があるのでしょうか? またどうやれば同じ行でA列B列共に○を含むものを集計できるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ワイドカードが使えるのは検索系の関数だけだと思います。 もし、 =IF(AND(A3="*○*",B3="*○*"),TRUE) の様な事をやりたいのであれば、 =IF(AND(ISNUMBER(FIND("○",A3)),ISNUMBER(FIND("○",B3))),TRUE,FALSE) としてみてはいかがでしょうか。 またFINDはワイルドカードが使えないので、ワイルドカードが使えるSEARCHに変えると、 =IF(AND(ISNUMBER(SEARCH("*○*",A3)),ISNUMBER(SEARCH("*○*",B3))),TRUE,FALSE) とも出来ますが、今回のようなワイルドカードは結果的に変わりませんので、前者のFINDで十分ですね。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
COUNTIF関数が「そういうものだ」と言うことでしょう。 COUNTIF関数を良く見ると、範囲指定したセルの値のそれぞれの全部について、「一律に」条件に該当するかどうか問題にしており、特定のセルの値がどうこうと見てくれる関数ではないからです。2つ以上の条件を持ち出すと、2つ以上のセルを指定せざるを得ないですから。 「2か3かどちらかであれば1と数えよ」も1つの式では表現出来ない(=countif(a1:b5,2)+countif(a1:b5,3)は別にして)ようですが。 和であれば、SUMPRODUCT関数が思いつくが、#1のご回答にある「ワイドカードが使えるのは検索系の関数だけだと」使えません。 FIND、SEARCHは、何文字目かを問題にしないで使うケースでは、そもそもワイルドカード機能を含んだ機能のようなところがありますから、ワイルドカードを問題にする必要がないと思います。 幼稚なやり方とおもいますが、A1:B5に aaa sd dss sdf fdfa fagh ga art hgh dfa でC1に=IF(ISERROR(FIND("a",A1)*FIND("a",B1)),"",1)といれてC5まで複写。 (指定した文字列が存在しないときエラーになることを使いました。) C3,C4が1になりました。あとはこれを足して件数を出すなり、SUMIFで他列セル値を足すなり出来ると思います。
お礼
ありがとうございました。 たすかりました!!
お礼
ありがとうございました。 たすかりました!!