重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

とても困ってます。


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))}
求めようとしたのですが、
どうもうまく個数が求められません。
なぜでしょうか?
(例が悪くて、申し訳ありません)

とても困っています。
回答宜しくお願い致します。

A 回答 (5件)

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を通すしかありません。
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございました。
また、私のわかりにくい質問に
丁寧にわかりやすく答えていただき、感謝感謝です(涙)。

>「Pがどこかにある」という条件なので、
>ワイルドカードなしで、同等の検索が出来るわけです。

なるほど~。
ワイルドカードの利用制限をしっかり理解していませんでした。
また、「あいまい検索は、SEARCHやFINDを通す!」ですね。

ありがとうございました。

お礼日時:2004/09/10 15:00

#1です。


#3の人も答えているように、「*」「?」などをワイルドカードとして使うのは一部の関数でしか使えません。
文字列=”*P*”と言う時に、
*P*という文字列を同一内容であるか検査したいのか、
*をワイルドカードとしてマッチングしたいのか、
この式では、コンピュータにはその意図はわかりません。
VBAでは、
文字列 Like "*P*"
という形で、マッチングをさせることができます。

>皆さんでしたら…使いますか?
私なら、DCOUNTを使います。
複数の条件について難しく考えなくても、
単に、並べるだけですみますし、可読性(他の人だってやってることが簡単にわかる)が増します。
    • good
    • 0
この回答へのお礼

新たに回答していただき、ありがとうございます。

>*P*という文字列を同一内容であるか検査したいのか、
>*をワイルドカードとしてマッチングしたいのか、
>この式では、コンピュータにはその意図はわかりません。

全てをコンピュータに任せられないのですね。。。
VBAは、察しておられるとは思いますが、
使えません。
が、名前は聞いたことがあります(笑)
いつか使える日がきますように~。

>私なら、DCOUNTを使います。

いまいち、DCOUNT関数がわからないのですよね。頭がこんがらがってしまって・・・・。
今回は急いでいたのもあって、理解できたSUMPRODUCT関数を使いました。

>複数の条件について難しく考えなくても、
>単に、並べるだけですみますし、可読性(他の人だってやってることが簡単にわかる)が増します。

頭がこんがらがりながら、配列関数をつかったのですが
難しく考えすぎたようです。
BLUEPIXYさんがおっしゃるとおり、
みんなが数式を見て簡単に理解できるのがベストと思います。

改めて、数式を作り直したいと思います。
とても、参考になりました。ありがとうございました。

お礼日時:2004/09/11 02:51

こんにちは。

maruru01です。

補足程度ですが。
NOT+ISERROR、NOT+ISERRは、ISNUMBER1つに出来ます。
No.2の方の数式なら、

=SUMPRODUCT(ISNUMBER(FIND("P",$B$2:$B$1000))*($C$2:$C$1000=11))

という風になります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
とても助かりました。
回答してくださった皆さんにお聞きしたいことがあります。
お時間のあるときにわかる範囲で教えていただけますか?

シート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)の式は使わず、
教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします)

文面が同じになってしまったこと、お許しください。

宜しくお願い致します。ありがとうございました。

お礼日時:2004/09/10 13:49

こんな方法もあります。


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

早速の回答ありがとうございます。
とても助かりました。
回答してくださった皆さんにお聞きしたいことがあります。
お時間のあるときにわかる範囲で教えていただけますか?

シート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)の式は使わず、
教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします)

文面が同じになってしまったこと、お許しください。

宜しくお願い致します。ありがとうございました。

お礼日時:2004/09/10 13:48

={SUM(NOT(ISERR(SEARCH("*P*",B2:B1000)))*(C2:C1000=$A$1))}


でできます

DCOUNTを使う方法もあります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
とても助かりました。
回答してくださった皆さんにお聞きしたいことがあります。
お時間のあるときにわかる範囲で教えていただけますか?

シート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)の式は使わず、
教えていただいた式を使いますか?(皆さんの式のほうがスマートなような気がします)

文面が同じになってしまったこと、お許しください。

宜しくお願い致します。ありがとうございました。

お礼日時:2004/09/10 13:48

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