[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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)
(GobGob)
=COUNT(INDEX(SEARCH("鈴木_*数*",A1:A1000&"_"&B1:B1000),))
こっちでいいね。
(GobGob)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.