アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2010のSUMIFS関数って、縦横に条件がクロスする場合は、使えないのでしょうか?添付の画像で、A社の1月の合計(=820)を求めるために、G2セルに

=SUMIFS($B$2:$D$6,$A$2:$A$6,$F2,$B$1:$D$1,G$1)

と式を入れてありエラーになってしまっています。SUMIFS関数の引数が間違っているのではなく、SUMIFSはこういう集計はできない設定なのでしょうか?まあ、SUMPRODUCTとか作業列を使えば良いというのは分かるんですが。(表の作り方がおかしいという指摘はなしで。これはあくまでサンプルで、実際にはこれを拡張した形式で、どうしても作らないといけないもので。)

「Excel2010 SUMIFS関数につ」の質問画像

A 回答 (5件)

こんばんは!



SUMIFS関数はAND検索になりますので、
合計対象範囲、条件範囲1、条件範囲2・・・は列方向または行方向が一致(範囲セル数も一致)
していないとダメだと思います。

今回の場合、列方向の項目並びが同じなのでSUMIF関数で対応できます。
ただ、フィル&コピーするたびに合計範囲が移動しますので、
G2セルに
=SUMIF($A$2:$A$6,$F5,OFFSET($A$2:$A$6,,COLUMN(A1)))
という数式を入れ列・行方向にフィル&コピーしてみてはどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。そういうSUMIFの使い道があるのは分かっているのですが、SUMIFSは存外に気軽には使えないかも知れないですね。SUMPRODUCTならこういう縦横計算もできるのに。

お礼日時:2015/11/12 22:11

数式じゃないので全然やり方が変わるんですが、統合とかは如何ですか?

    • good
    • 0
この回答へのお礼

いや別に、そういう別解を思いつかないわけじゃないんで。SUMIFSについて聞きたかっただけなので。

お礼日時:2015/11/13 20:24

No.1・2です。



やはりSUMPRODUCT関数の式はそうでしたか。

データ数が極端に多くなければ大丈夫だと思います。
No.1で申し上げたようにSUMPRODUCT関数は配列数式になりますので
データ量が増えれば増えるほど計算速度が遅くなります。
極力PCに負担を掛けないようにするのであれば
やはりSUMIF関数でしょうかね。
(列すべてを参照範囲にしても大丈夫だと思いますので)

ただし、SUMIFS関数では今回の場合は対応できないと思います。
使うとすればSUMIF関数ですかね。

一般的には
合計範囲が固定していて、複数のAND条件で集計できるのがSUMIFS関数のようです。
Excel2003まではSUMPRODUCT関数で対応するしかなかったのですが、
Excel2007以降出現した関数ですのが、
いくら便利な関数だといっても使える場合とそうでない場合がありますね。

今回も回答でなくてごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

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

お礼日時:2015/11/13 20:25

関数の使い方がおかしい、


質問文にあるように行方向と、列方向を同時に指定することはできない。
VLOOKUP関数が唯一縦と横を指定できる関数になる。

自分なら合計範囲をOFFSET関数で指定して、SUMIF関数を使うかな。(SUMIFS関数ではない)
=SUMIF(検索範囲,検索条件,合計範囲)
なので、
=SUMIF($A$1:$A$1000,$F$2,OFFSET($A$1,0,MATCH(G$1,B$1:D$1),1000,1))
みたいに。
(未検証のため、正しく動作する保証はない)
    • good
    • 0
この回答へのお礼

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

お礼日時:2015/11/12 22:34

No.1です。



>SUMPRODUCTならこういう縦横計算もできるのに。

とありますが、SUMPRODUCT関数でどのように対処されたのでしょうか?
今回の場合だと
列方向だけのフィル&コピーであれば大丈夫だと思いますが、
行方向(下向き)のフィル&コピーに対しては対応できないのでは?

列方向だけでもわざわざ配列数式のSUMPRODUCT関数を使わなくても
SUMIF関数で大丈夫だと思うのですが・・・

※ ちょっとした疑問が沸きましたので
回答ではなくてごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

=SUMPRODUCT(($A$2:$A$6=$F2)*($B$1:$D$1=G$1)*($B$2:$D$6))

という式で出来ました。実際の用途では、縦方向にもっと検索列が必要になります。まあ、SUMIFSを使ってみたいという好奇心ありきですが。

お礼日時:2015/11/12 22:32

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