[[20040406160746]] 『SUMPRODUCT関数 中間一致できますか』(masa) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『SUMPRODUCT関数 中間一致できますか』(masa)

     A     B
  1 鈴木	数1
  2 佐藤	国語
  3 佐藤	数学
  4 山田	理科
  5 鈴木	社会
  6 鈴木	国語
  7 佐藤	英語
  8 田中	I数
  9 鈴木	数学1
 10 鈴木	数学2
 11 鈴木	英語
 12 佐藤	社会
 13 山田	理科
 14 鈴木	数1
     .    .
     .    .

 上記のデータで『鈴木先生が数学を担当する回数』をカウントします。
 ただし 「数学1」「数1」「I数」など表示は統一されていません。

 =SUMPRODUCT((A1:A1000="鈴木")*(B1:B1000="?数?"))

 ↑ この結果は 0件 でした。"?数?"の記述が良くないと思うのですが
 SUMPRODUCT関数では、単語の中間一致が使えないのでしょうか?
 Win98 Excel2000です

 ためしにどこかに下記の式を入力してみてください。
 
=B1="?数?"
 
答えはFALSEです。B1が"?数?"という文字列でないと、TRUEにな
りません。一部の検索関数ではこのような記述を受け付けてくれ
ますが、ワイルドカードはどんな数式でもOKというわけではあり
ません。
 
また、"?数?"の記述も検索関数の場合、"数"の前後にそれぞれ一
字ずつないと検索にかかりません。「前後に何らかの文字を含む」
という意味であれば、 "*数*" という記述になるかと思います。
"*"の場合は文字列がなくても検索対象になります。
 
=COUNTIF(B1:B1000,"?数?")
  これは結果「0」
 
=COUNTIF(B1:B1000,"*数*")
  これは結果「6」
 
このような違いになります。
 
が、今回の場合は単に文字列 "数" が含まれているものをカウ
ントすればよいだけと思いますので、数式は
 
=SUMPRODUCT((A1:A1000="鈴木")*(ISNUMBER(FIND("数",B1:B1000))))
 
のような感じになるかと思います。
ISNUMBER(FIND("数",B1:B1000)の部分は他にも書き様があると
思いますが・・・。
(KAMIYA)

 (KAMIYA)さん、ご回答ありがとうございます。

 まず私は、 * と ? のワイルドカードの使い方が違っていたのですね。
 そして、ワイルドカードを受付けない関数があり、SUMPRODUCT では
 使用できないのですね。わかりやすい説明をありがとうございました。

 置換・オートフィルタ・マクロ技などカウント方法は色々あると思われますが
 今回、入力済B列のデータは変更できない為 (KAMIYA)さんのおっしゃるよう
 『文字列 "数" が含まれているものをカウントすればよいだけ』なのです。

 =SUMPRODUCT((A1:A1000="鈴木")*(ISNUMBER(FIND("数",B1:B1000))))

 ↑この方法で解決しそうですが『他にも書き様があると思いますが・・・』の
 (KAMIYA)さんのお言葉が気になります。(^^;   
 今後の参考のためにも、今しばらく皆様の回答をお待ちしたいと思います。
 (masa)

=COUNT(INDEX(0/SEARCH("鈴木*数*",A1:A1000&B1:B1000),))

(GobGob)


 =COUNT(INDEX(SEARCH("鈴木_*数*",A1:A1000&"_"&B1:B1000),))

 こっちでいいね。

 (GobGob) 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.