SUMPRODUCT 関数について その8
検索する文字列の一部が一致するデータを集計する
SUMPRODUCT_7_2.ods

この一覧の場合において
「商品名」欄に 「プレート(M)」「プレート(L)」・「スプーン(M)」「スプーン(L)」がある
これで 「プレート」や「スプーン」で 集計するパターン
SUMIF 関数の場合などは 条件値に「正規表現」を使う事が出来る
=SUMIF(商品名,".*スプーン.*",金額)
このように 条件欄に 「.*スプーン.*」と 正規表現を利用して入力する
しかし SUMIF 関数では 複数条件で集計できない
そこで
SUMPRODUCT 関数で 一部一致の式の作り方
考え方は セルの中に 探している文字列が 見つかるかどうか?
セルの中に探している文字列があれば 一致している
ちょっと ややこしいが
文字列を探す = FIND 関数
文字列があれば 数値 文字列がない場合は エラーになる
そこで エラーかどうかを調べる関数 ISERROR 関数を使う
ISERROR 関数の場合 エラーの時に TRUE になる
逆の答え エラーの場合が FALSE であって欲しいので NOT 関数を使う
NOT(ISERROR(FIND($K3,商品名)))
この式の解説は
「商品名」と名前を付けたセル範囲で
K3 セルに入力した「スプーン」という文字列があるセルは
ISERROR 関数では FALSE
K3 セルに入力した「スプーン」という文字列が無いセルは
ISERROR 関数では TRUE
それを NOT 関数で 逆にする
この場合の FIND 関数は 本来の何番目にあるかを求めるのではなく
FIND 関数が エラーになるか?ならないか? の判断のため
これを SUMPRODUCT 関数に入れる
=SUMPRODUCT((店舗名=L$2)*(NOT(ISERROR(FIND($K3,商品名)))),金額)
店舗名が L2 セルに入力された店舗で
商品名に K3 セルにある文字列が 入っている
金額の集計
オートフィルしても大丈夫のように 参照固定をしている
ISERROR 関数
値がエラー値の場合 TRUE を返します
ISERROR( 値 )
値 (必須) : 検査の対象となる値
NOT 関数
引数が TRUE のとき FALSE を FALSE のとき TRUE を返す
NOT( 論理値 )
論理値(必須) : 論理値あるいは結果が TRUE または FALSE になる論理式
SUMPRODUCT_7_2.ods
「商品名」欄に 「プレート(M)」「プレート(L)」・「スプーン(M)」「スプーン(L)」がある
これで 「プレート」や「スプーン」で 集計するパターン
SUMIF 関数の場合などは 条件値に「正規表現」を使う事が出来る
=SUMIF(商品名,".*スプーン.*",金額)
このように 条件欄に 「.*スプーン.*」と 正規表現を利用して入力する
しかし SUMIF 関数では 複数条件で集計できない
そこで
SUMPRODUCT 関数で 一部一致の式の作り方
考え方は セルの中に 探している文字列が 見つかるかどうか?
セルの中に探している文字列があれば 一致している
ちょっと ややこしいが
そこで エラーかどうかを調べる関数 ISERROR 関数を使う
逆の答え エラーの場合が FALSE であって欲しいので NOT 関数を使う
この式の解説は
「商品名」と名前を付けたセル範囲で
K3 セルに入力した「スプーン」という文字列があるセルは
ISERROR 関数では FALSE
K3 セルに入力した「スプーン」という文字列が無いセルは
ISERROR 関数では TRUE
それを NOT 関数で 逆にする
この場合の FIND 関数は 本来の何番目にあるかを求めるのではなく
FIND 関数が エラーになるか?ならないか? の判断のため
これを SUMPRODUCT 関数に入れる
店舗名が L2 セルに入力された店舗で
商品名に K3 セルにある文字列が 入っている
金額の集計
オートフィルしても大丈夫のように 参照固定をしている
ISERROR 関数
値がエラー値の場合 TRUE を返します
ISERROR( 値 )
値 (必須) : 検査の対象となる値
NOT 関数
引数が TRUE のとき FALSE を FALSE のとき TRUE を返す
NOT( 論理値 )
論理値(必須) : 論理値あるいは結果が TRUE または FALSE になる論理式