• ベストアンサー

エクセルでの「文字を含む」複数条件の個数算出方法

とても困ってます。 例 A1セルに「11」が入っています。   B  C 1 ああ  11 2 いい  12 3 Pあ  11 4 いP  11 ・ ・ ・ で、B列にPを含み、C列が「11」の値を ={SUM(iF($B$2:$B$1000="*P*",IF($C$2:$C$1000=A$1,1,0),0))} 求めようとしたのですが、 どうもうまく個数が求められません。 なぜでしょうか? (例が悪くて、申し訳ありません) とても困っています。 回答宜しくお願い致します。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

No.3です。 >={SUM(IF($B$2:$B$1000="*P*",IF($C$2:$C$1000=A$1,1,0),0))} >では、求められないのですか? 「*」や「?」などのワイルドカードは、 「セル参照(セル範囲参照) 比較演算子 条件」 の形では、条件の中に組み込めません。 ちなみに、ここでいう"比較演算子"というのは、 「=」「>」「<」「>=」「<=」「<>」などのことです。 ワイルドカードが利用出来るのは、 条件としては、SUMIF、COUNTIF 検索値としては、SEARCH、MATCH など、いくつかの関数に限られます。 FIND自体はワイルドカードは使用出来ませんが、No.2の方の回答は、 「Pがどこかにある」 という条件なので、ワイルドカードなしで、同等の検索が出来るわけです。 質問欄のようなあいまい検索は、SEARCHやFINDを通すしかありません。

katakko
質問者

お礼

早速の回答、ありがとうございました。 また、私のわかりにくい質問に 丁寧にわかりやすく答えていただき、感謝感謝です(涙)。 >「Pがどこかにある」という条件なので、 >ワイルドカードなしで、同等の検索が出来るわけです。 なるほど~。 ワイルドカードの利用制限をしっかり理解していませんでした。 また、「あいまい検索は、SEARCHやFINDを通す!」ですね。 ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

#1です。 #3の人も答えているように、「*」「?」などをワイルドカードとして使うのは一部の関数でしか使えません。 文字列=”*P*”と言う時に、 *P*という文字列を同一内容であるか検査したいのか、 *をワイルドカードとしてマッチングしたいのか、 この式では、コンピュータにはその意図はわかりません。 VBAでは、 文字列 Like "*P*" という形で、マッチングをさせることができます。 >皆さんでしたら…使いますか? 私なら、DCOUNTを使います。 複数の条件について難しく考えなくても、 単に、並べるだけですみますし、可読性(他の人だってやってることが簡単にわかる)が増します。

katakko
質問者

お礼

新たに回答していただき、ありがとうございます。 >*P*という文字列を同一内容であるか検査したいのか、 >*をワイルドカードとしてマッチングしたいのか、 >この式では、コンピュータにはその意図はわかりません。 全てをコンピュータに任せられないのですね。。。 VBAは、察しておられるとは思いますが、 使えません。 が、名前は聞いたことがあります(笑) いつか使える日がきますように~。 >私なら、DCOUNTを使います。 いまいち、DCOUNT関数がわからないのですよね。頭がこんがらがってしまって・・・・。 今回は急いでいたのもあって、理解できたSUMPRODUCT関数を使いました。 >複数の条件について難しく考えなくても、 >単に、並べるだけですみますし、可読性(他の人だってやってることが簡単にわかる)が増します。 頭がこんがらがりながら、配列関数をつかったのですが 難しく考えすぎたようです。 BLUEPIXYさんがおっしゃるとおり、 みんなが数式を見て簡単に理解できるのがベストと思います。 改めて、数式を作り直したいと思います。 とても、参考になりました。ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

こんにちは。maruru01です。 補足程度ですが。 NOT+ISERROR、NOT+ISERRは、ISNUMBER1つに出来ます。 No.2の方の数式なら、 =SUMPRODUCT(ISNUMBER(FIND("P",$B$2:$B$1000))*($C$2:$C$1000=11)) という風になります。

katakko
質問者

お礼

早速の回答ありがとうございます。 とても助かりました。 回答してくださった皆さんにお聞きしたいことがあります。 お時間のあるときにわかる範囲で教えていただけますか? シートAに    A    B 1 りんご    0点 2 りんご    2点 3 みかん    3点 4 みかん    1点 5 りんご    2点 シートB(A列は点数 B1セルに「りんご」)に    A    B     1   答え     2   答え     3   答え     4   答え が入っていて、 シートBのB列で点数ごとの「りんご」の個数(例:2点のりんごはいくつあるか)を      ={SUM(IF(シートA!$A$1:$A$1000=$B$1,IF(シートA!$B$1:$B$1000=A2,1,0),0)))}-(1)と 求めました。 この場合は、求められるのに なぜ、 ={SUM(IF($B$2:$B$1000="*P*",IF($C$2:$C$1000=A$1,1,0),0))} では、求められないのですか? また、 皆さんでしたら、(1)の式は使わず、 教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします) 文面が同じになってしまったこと、お許しください。 宜しくお願い致します。ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

こんな方法もあります。 =SUMPRODUCT(NOT(ISERROR(FIND("P",$B$2:$B$1000)))*($C$2:$C$1000=11)) Pが半角,全角両方ある場合はJIS関数又はASC関数を併用してください。 =SUMPRODUCT(NOT(ISERROR(FIND("P",ASC($B$2:$B$1000))))*($C$2:$C$1000=11)) 又は =SUMPRODUCT(NOT(ISERROR(FIND("P",JIS($B$2:$B$1000))))*($C$2:$C$1000=11))

katakko
質問者

お礼

早速の回答ありがとうございます。 とても助かりました。 回答してくださった皆さんにお聞きしたいことがあります。 お時間のあるときにわかる範囲で教えていただけますか? シートAに    A    B 1 りんご    0点 2 りんご    2点 3 みかん    3点 4 みかん    1点 5 りんご    2点 シートB(A列は点数 B1セルに「りんご」)に    A    B     1   答え     2   答え     3   答え     4   答え が入っていて、 シートBのB列で点数ごとの「りんご」の個数(例:2点のりんごはいくつあるか)を      ={SUM(IF(シートA!$A$1:$A$1000=$B$1,IF(シートA!$B$1:$B$1000=A2,1,0),0)))}-(1)と 求めました。 この場合は、求められるのに なぜ、 ={SUM(IF($B$2:$B$1000="*P*",IF($C$2:$C$1000=A$1,1,0),0))} では、求められないのですか? また、 皆さんでしたら、(1)の式は使わず、 教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします) 文面が同じになってしまったこと、お許しください。 宜しくお願い致します。ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

={SUM(NOT(ISERR(SEARCH("*P*",B2:B1000)))*(C2:C1000=$A$1))} でできます DCOUNTを使う方法もあります。

katakko
質問者

お礼

早速の回答ありがとうございます。 とても助かりました。 回答してくださった皆さんにお聞きしたいことがあります。 お時間のあるときにわかる範囲で教えていただけますか? シートAに    A    B 1 りんご    0点 2 りんご    2点 3 みかん    3点 4 みかん    1点 5 りんご    2点 シートB(A列は点数 B1セルに「りんご」)に    A    B     1   答え     2   答え     3   答え     4   答え が入っていて、 シートBのB列で点数ごとの「りんご」の個数(例:2点のりんごはいくつあるか)を      ={SUM(IF(シートA!$A$1:$A$1000=$B$1,IF(シートA!$B$1:$B$1000=A2,1,0),0)))}-(1)と 求めました。 この場合は、求められるのに なぜ、 ={SUM(IF($B$2:$B$1000="*P*",IF($C$2:$C$1000=A$1,1,0),0))} では、求められないのですか? また、 皆さんでしたら、(1)の式は使わず、 教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします) 文面が同じになってしまったこと、お許しください。 宜しくお願い致します。ありがとうございました。

関連するQ&A

  • 複数条件の個数をカウントしたい

    例として下記のような表があります。 A列には年月日、B列にはコード、C列には現在の状況が入力されています。 □   A      B     C 1  受注年月日  コード   状況 2 2006/1/17    A-1    確定 3 2006/1/20    A-1    キャン 4 2006/1/30    C-2    待ちち 5 2006/2/6    C-3    キャン 6 2006/3/7     B-1    確定 7 2006/4/25    A-1   キャン 8 2006/4/28    B-1     確定 1月受注の確定のデータ個数を数えたいのですが、DCOUNTではなく、配列関数でしようとしています。 {=SUM(IF($A$2:$A$8<"2006/2/1",IF($C$2:$C$8="確定",1)))} と入れています。 結果は1なはずですが、3という結果になります。 後半条件の確定の個数のみ数えているようです。 何か間違いがあるのでしょうか? またもっと簡単な違う方法があれば教えていたきたいと思います。 よろしくお願いいたします。

  • EXCELのセルの個数の算出

    文字や数値を含んだセルの数を求めたいのですが・・・ それだけならわかるのですが、 式を含んだ場合がわかりません。 VBAは使わずに求めたいのですが・・・ 例えば、A1にあ、B1に10、C1に=IF(D1="","",D1) と入力されているとします。 A1~C1の範囲で、D1に何も入力されていない時はセルの個数を2、 D1に何か入力されたらセルの個数は3としたいのです。 要するに、見た目上何かセルに入ってれば、 個数の対象としたいのですが・・・ どなたかおわかりになられるかたがおられましたら、 是非ともよろしくお願い致します。

  • <エクセル>複数条件下での個数の数え方

    A列に都道府県、B列に地域、C列に売上がある表があります。 東京と大阪を除いた地域のうち、C列で0以上のセルの個数を表示したいと思います。(ここだと2コ) countif、dcountなど考えましたが、うまく表示できません。 列を増やさず、個数を表示できる関数を教えてくださいますか? 宜しくお願いします。    A    B       C 1 東京    新宿    500 2 大阪    心斎橋    0 3 名古屋   栄     300 4 東京    渋谷     0 5 北海道   札幌    100 6 宮城    仙台     0 7 大阪    梅田    100  

  • Excel>複数の列を比較して、重複セルの個数を得る方法

    Excelにて A列:aabb,bbcc,aacc B列:aacc,bbdd,ccdd C列:aacc,eehh,ccdd A,B列間で、重複セル「aacc」の1コ、 B,C列間で、重複セル「aacc」「ccdd」の2コ、 A,C列間で、重複セル「aacc」の1コ、 A,B,C列間で、重複セル「aacc」の1コ というように、複数の列を比較して、重複セルの個数を得る方法を教えてくださ い。複数の列では難解なら、2つの列を比較した場合でも結構です。 なお、重複セルの値、例えば「aacc」など得る必要はありません。個数のみで結 構です。宜しくお願い致します。

  • 【エクセル】複数条件に該当する値をかえす方法

    エクセルで表を作成していますが、どうしても上手くできません。 どなたかお分かりになりますでしょうか。 エクセル   列A   列B    列C      ---------------------------------- 1 個人   新規   2000 (円) 2 法人   新規   3000 (円) 3 法人   新規   2500 (円) 4 個人   既存   1000 (円) 5 その他  新規    500 (円) 列A、列Bはそれぞれ固定値が入ります。 列Cはすべての値(定まっていない値)が入ります。 列A、列Bをそれぞれ条件として、該当する場合列Cの 値を別シートにかえしたいのです。 例)列Aが「個人」、列Bが「新規」の場合、 列Cの値をかえす 関数を使って =IF(AND(A1=個人,B1=新規),"C1","")  とやってもエラーになってしまいます。 別シートには表を作成してあり、あるセルに列Cの 値のみ反映させたいのですが、うまくいきません。 同シート内でやっても上手くいかないので、数式そのものに 問題があると思っています。 上手く説明が出来ているか自信がありませんが、 解決できる方法はありますでしょうか。 どうぞ宜しくお願い致します。

  • 複数条件を満たす複数のセルから特定文字数を数える

    エクセルについて質問です。 エクセルのバージョンは2007を使用しています。 標記の結果を導く数式を組みたいのですが、例えば {=SUM(LEN(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""))-LEN(SUBSTITUTE(IF((A3:A100=E1)*(B3:B100=F1),C3:C100,""),"@",""))} という配列数式を組んで、C3からC100までの範囲のうち 条件で絞り込んだセルの中にある@の文字を数え、その個数を該当セルに返したいのですが マイナスの値が返ってくるなどどうも正確な値が返ってこず、困っております。 なお、@は同一セル内に複数存在することもあり その場合@A @Bのように半角スペースで区切ってあります。 もちろんC3からC100までのセルの中には空白もあります。 何か根本的なところで認識違いがあるのでしょうか。 それとも単純なミスがあるのでしょうか。 どうかお知恵をお借りできれば幸いです。

  • エクセル IF関数が入った条件付き書式について

    エクセルにおいて、セルA1、B1、C1があるとします。A1、B1には数値が何も入力されていない状態で、C1に計算式「=SUM(A1)/B1」が入っているとします。このままでは、C1は、「#DIV/0!」と表示されます。 この表示を消すために、C1にIF、ISERROR関数を使い、「=IF(ISERROR(SUM(A1)/B1),"",SUM(A1)/B1)」の計算式を入力します。 このままでもいいのですが、C1の値が「10以上」になった時に、C1のセルに色を付けたいのです。 書式→条件付き書式→セルの値が→次の値以上→10 にすると、セルに何も値が入っていない(空白)状態で色だけが付いてしまいます。 色々調べると、IF関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • エクセル2010、複数条件のセルを数える

    エクセル2010です。 A列のリストの中から、「B1またはC1のセル」と同一の名前がいくつあるか、という計算式を作りたいです。 複数条件ですから、COUNTIFS関数で、 =COUNTIFS(A:A,B1,C1) としてみたのですが、これではエラーが出ます。 よく考えてみたら、「または」という、どちらかの条件が含まれるということですから、これでは駄目なようです。 そこで調べたところ(http://support.microsoft.com/kb/275166/ja)、こういう場合SUM(IF())を使うというのがわかり、 =SUM(IF((A:A=B1)+(A:A=C1),1,0)) としてみましたが、これでも結果がすべて0になってしまいます。 私は何か捉え違いをしているのでしょうか? こういう条件の場合、どういう式にすればよいのでしょうか。 どうぞよろしくお願いします。

  • 複数条件での値参照をする関数

    Excel2007を使っています。 以下のような表があります。 店番  月度  個数 111     4    1 111     5    0 113     4    0 112     4    1 113     5    2 別のシートに以下の表があります。 店番  4月個数  5月個数 111 112 113 この4月個数の列と、5月個数の列に関数で値を参照させたいと思います。 店番をA1セルとすると、B2セルには店番が111の4月の個数を表示させたいです。 B2に =IF(ISERROR(VLOOKUP(A2,元!A:B,2,0)),"",IF(VLOOKUP(A2,元!A:C,2,0)<>4,"",VLOOKUP(A2,元!A:C,3,0))) C2に =IF(ISERROR(VLOOKUP(A1,元!A:B,2,0)),"",IF(VLOOKUP(A1,元!A:C,2,0)<>5,"",VLOOKUP(A1,元!A:C,3,0))) このような式を入れると、4月か5月どちらか上に書いた方しかデータが表示されませんでした。 更新ボタンやトリガーを使わずにできるといいので、ピボットやVBAではなく関数でやりたいと思っているのですが、どのようにすれば良いか分かりません。 使える関数があれば、ぜひ教えて下さい。

  • EXCELで複数列にまたがる複数条件のセルの個数を求めるには?

    こんにちは。よろしくお願いします。 A列に1or2が入力されているセル、且つB列に3or4が入力されている セルの個数を求めるにはどういった数式を作ればいいのでしょうか? COUNTIFだとだめなんですよね。

専門家に質問してみよう