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

SUMIFSで、条件をORにしたいです。
画像で言うと、商品コードAとBとCが食品なので、G11セルには
「店舗が1で、商品コードがAかBかCの売上データを合計」という式を入れたいです。

で、ネットで検索して、SUMIFS関数の引数にOR関数が使えないということが分かり、
代わりにSUMIFS関数全体をSUM()で囲って、ORにしたいところを{}で囲うといけると読みました。
が、{}の中が”文字列”だといけるのですが、セルを指定すると「この数式には問題があります」というポップアップが出てしまいます。

画像は売上集計の項目が3つだけですが、実際仕事で使うときはもっとたくさん項目があるので、{}の中をセルで指定したいです。
Aの列、Bの列、Cの列をそれぞれ作って合計すればいいじゃん、というのは分かるのですが、SUMIFS関数の技としてやり方を知っておきたく思うのですが、どうやったらできますか?それとも、セルの指定はできない仕様なのでしょうか?

バージョンは2010です。よろしくお願いします。

「SUMIFS関数で、条件をORにしたいと」の質問画像

質問者からの補足コメント

  • すみません、質問が分かりにくかったようです。
    「G11セルに適切な式を入れるにはどうしたらいいですか」ではなく、
    「SUMIF関数の{}の中を、文字列じゃなくセルで指定することはできないか?」という質問です!
    もしできないならできないと分かればいいんです。
    (検索しても、「セルは指定できません」と書いてあるページがないので何か方法がないかなと質問しました)

    現状は「Aの列、Bの列、Cの列をそれぞれ作って合計」で数字はとれていて、
    「SUMIFS関数の技としてやり方を知り」たかっただけなんです…

      補足日時:2020/07/30 22:40

A 回答 (7件)

こんばんは、


横から失礼します。
代替え案はすでに回答が出ているようですし、出来ているようなので
本題を
数式内の{"A","B","C"}は、配列定数だと思いますのでセルを含めることは出来ません。

以下 オフィシャルサポートサイト <配列定数の構文> 引用

数値、文字列、論理値 (TRUE や FALSE など)、および #N/A などのエラー値を含めることができますが
別の配列、数式、または関数を含めることができません。
つまり、カンマまたはセミコロンで区切られた文字列または数値のみを含めることができます。

引用元 及び参考サイト: 「配列数式のガイドラインと例」
https://support.microsoft.com/ja-jp/office/%E9%8 …
    • good
    • 0
この回答へのお礼

「配列定数」というのですね。残念ながら私には難しすぎましたが、そういうものがある、ということだけでも勉強になりました。ありがとうございました!

お礼日時:2020/08/01 22:47

No.3・6です。



連投失礼します。

投稿後もう一度質問文を読み返してみて・・・
タイトルが「SUMIFS関数で」となっていましたね。

SUMIFS関数で各条件範囲の「条件」で複数セルを参照する!というのは無理のような気がします。
なので、無理やりNo.6のような配列数式で回答しましたが、
お示しの画像の配置だとG11セルの数式は
=SUM(IF(($A$1:$A$1000=$F11)*(COUNTIF(G$7:G$9,$B$1:$B$1000)),$C$1:$C$1000))

ですかね。(前回同様配列数式になります。)

※ お望みの方法でなかったら無視してください。m(_ _)m
    • good
    • 0
この回答へのお礼

何度もありがとうございました!
無理だと分かっただけでも良かったです。しばらく無駄な努力を続けていたので…;
ぱっと諦めて他のことを勉強します。ありがとうございました。

お礼日時:2020/08/01 22:48

No.3です。



>{}の中にセルを指定できるかどうか」だけ知りたかったんです。

結局「OR条件」で複数セルを直接参照したい!というコトですかね?

無理やりって感じですが・・・
前回当方がアップした画像の配置だとすると、G6セルに
=SUM(IF(($A$1:$A$1000=$F6)*(COUNTIF(G$1:G$3,$B$1:$B$1000)),$C$1:$C$1000))

配列数式になりますので、Ctrl+Shift+Enterで確定!(←必須★)し
フィルハンドルで列・行方向にコピーしてみてください。

※ とりあえず1000行の数式にしています。
配列数式は極端に広い範囲を指定してしまうとPCにかなりの負担をかけ
計算速度が大幅に落ちてしまいます。
(3000~5000行程度ならまだ我慢できるかも・・・)

お手元のデータ量がどの程度が不明ですが、
No.3の方が軽いはずです。m(_ _)m
    • good
    • 0

データベース自体に食品・雑貨・その他等の分類コードを挿入できれば一番良いんですけどね…あとはDSUM関数で一発。


でも、それが不可能だから質問されているのですよね。
で、あれば別シートに食品リストや雑貨リストを作成することで幸せになれそうな気がするのですが。
商品コードが増えても管理はしやすいと思われます。
    • good
    • 0
この回答へのお礼

そうですね、DSUM関数はまだ勉強していないのですが、それがあればSUMIFSでも一発です。
ただ、今回は例として簡易的に表を作りましたが、実際の業務では「この店舗は重点商品がAとBだからそれをとって、この店舗はAとCとEだから…」のように、それぞれ集計項目が異なり、表を何個も作ってかなり面倒なとり方をしています。
なので、SUMIFS関数でOR条件セル指定ができれば、各店舗ごとに重点商品のコードを書いておき、SUMIFS関数で一発…とできるかな、と思ったんです。

お礼日時:2020/07/30 22:46

こんにちは!



一気に!となると相当長い式になりメンテナンスが大変だと思います。
↓の画像のように作業用の列を設けてみてはどうでしょうか?

画像では作業列D2セルに
=IF(B2="","",SUMPRODUCT((G$1:I$3=B2)*COLUMN(A1:C1)))

という数式を入れフィルハンドルで下へコピーしています。

そしてG6セルに
=SUMIFS($C:$C,$A:$A,$F6,$D:$D,COLUMN(A1))

という数式を入れ列・行方向にフィル&コピー!

これで画像のような感じになります。

※ 作業列が目障りであれば遠く離れた列にするか
非表示にしておいてください。m(_ _)m
「SUMIFS関数で、条件をORにしたいと」の回答画像3
    • good
    • 0
この回答へのお礼

SUMPRODUCT、COLUMNは不勉強で存じませんが、列を増やしてとる方法だったらできてまして、
「{}の中にセルを指定できるかどうか」だけ知りたかったんです。
例を出さないと分かりにくいと思って表を作ったのですが、かえって紛らわしくてすみません。

お礼日時:2020/07/30 22:47

27個だろうが1000個だろうが、SUMIFS関数やSUMPRODUCT関数1つでやるとしても、それだけの条件を書く必要があるのは同じことです。



手間をかけたくないのであれば、別のセルにSUMIFS関数で合計を出しておき、その後SUM関数でその数値をまとめるなどしてみましょう。
絶対参照と相対参照を組み合わせれば、フィルで数式を複製して楽ができます。
    • good
    • 0
この回答へのお礼

そうですね、現状は仰る通りのとり方をしています。

お礼日時:2020/07/30 22:48

この場合、SUMIFS関数を商品別に3回使えば良い。

そして足し算。
と、マジで単純な方法で解決できます。
 =SUNIFS(店舗コードが1で商品コードがA) + SUNIFS(店舗コードが1で商品コードがB) + SUNIFS(店舗コードが1で商品コードがC)
こんな感じにすれば解決。
    • good
    • 0
この回答へのお礼

ああ~~~そうだすみませんそれもやったんです!
やったんですが、実際の業務で使うものでそのやり方だと、SUMIFS+SUMIFS+……が27個になって大変だったので、一度にORでまとめるやり方を知りたくて…

お礼日時:2020/07/30 00:09

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