- 締切済み
1つ以上の検索条件のワイルドカードの使い方について
質問なのですがエクセルの表に列ごとに項目があり、列にある文字列を検索して他のシートに数を集計したいのですが、 1つだと=COUNTIF(K11:S851,"*AA*")で可能なのですが 2つ以上の検索で=SUM(IF(K11:S851="*AA*",IF(BL11:BL851="BB",1,0)))でだとワイルドカードで 検索できません。 また、2つ以上の条件で個数を抽出する時に便利な方法が あれば教えてください。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- maruru01
- ベストアンサー率51% (1179/2272)
No.1です。 >とすると最初の条件が全て検索されてしまうようです。 つまり、2番目の条件だけになるということでしょうか? 数式自体は問題ないようなので、もう一度データ内容を確認して下さい。 2つの条件でシートが異なるようですが、行位置はずれていませんか? >2つ以上の場合はどうなのでしょうか? 後半の条件が、「"BB"も"CC"も含まない」ということなら、 =SUMPRODUCT(ISNUMBER(FIND(省略))*ISERROR(FIND("BB",省略))*ISERROR(FIND("CC",省略))) とすればいいです。
- maruru01
- ベストアンサー率51% (1179/2272)
再びNo.1です。 >たとえばある列の"BB"以外の文字列を集計したい場合です。 「"BB"」ではない(つまり、「"ABB"」はOK)という場合は、FIND関数ではなく、 =SUMPRODUCT((条件1)*(BL11:BL851<>"BB")) とします。 「"BB"」を含まない(つまり、「"ABB"」もダメ)という場合は、FINDで見つからなかったら、という条件にします。 =SUMPRODUCT((条件1)*ISERROR(FIND("BB",BL11:BL851))) とします。 FIND関数は見つからない場合は、エラーを返すので、ISERROR関数で判別します。
お礼
=SUMPRODUCT(ISNUMBER(FIND("AA",B11:J851))*ISERROR(FIND("BB",線源管理QA!K11:S851))) とすると最初の条件が全て検索されてしまうようです。 しかもどちらもわいるどカードなので最初は実現できません。何がいけないのでしょうか? また、=SUMPRODUCT(ISNUMBER(FIND("AA",B11:J851))*ISERROR(FIND("BB","CC",線源管理QA!K11:S851))) のような2つ以上の場合はどうなのでしょうか? ~以外と一緒に使えないのでしょうか?
- maruru01
- ベストアンサー率51% (1179/2272)
No.1です。 >調べるとFINDはワイルドカードでは使えません。 だから、使ってないですが。 FIND関数は文字列中の検索文字列の位置を検索する関数で、 どこかに検索文字列があれば、位置の数値を返すので、結局「*AA*」で検索しているのと同じです。 >やってみたのですが正しく検出できませんでした。 まさか、わざわざ、 FIND("*AA*",・・・) に替えてないですよね? あと、片方の条件が、「K11:S851」と複数列になっていますが、 仮に、同じ11行目のK列とP列に「AA」が含まれていたら、 それは「2」とカウントするのでしょうか? それとも「1」なんでしょうか? 質問欄の、 =COUNTIF(K11:S851,"*AA*") という数式の考え方だと「2」とカウントするということになりますが。 私の数式もそのつもりで作成しています。
お礼
すみません。*がついていました。できました。 さっきの文において~以外の検出の場合においてはさきほどの文ではできないのですがどうすればよろしいでしょうか? たとえばある列の"BB"以外の文字列を集計したい場合です。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 こんな感じ =SUMPRODUCT(ISNUMBER(FIND("AA",K11:S851))*ISNUMBER(FIND("BB",BL11:BL851)))
お礼
すいません。やってみたのですが正しく検出できませんでした。調べるとFINDはワイルドカードでは使えません。 ありがとうございます。
お礼
できました。細かく教えて頂きありがとうございます。 関数についてもっと勉強したいと思います。