ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのsumifs関数 合計対象範囲が2次元

  • mixiチェック
  • このエントリーをはてなブックマークに追加
タイトルの件、解が#valueとなる原因は、
sumifs関数の合計対象範囲が2次元に対応していないからでしょうか?

具体的には下記計算式例。

=SUMIFS($B$2:$Z$14,$A$2:$A$14,$AA2,$B$1:$Z$1,">"&$AB$1,$B$1:$Z$1,"<="&$AC$1)

行方向A列に条件範囲1(例えば部品番号)、
列方向1行目(タイトル行)に条件範囲(例えば、日付)2、3 があるDB形式のエクセル2007で、

合計対象範囲を2次元、例えば$B$2:$Z$14
条件範囲1を$A$2:$A$14、条件1 "="&$AA2

条件範囲2を$B$1:$Z$1、条件2 ">"&$AB$1

条件範囲3を$B$1:$Z$1、条件2 "<="&$AC$1


ご教授頂ければ幸いです。

コメント(16)

これを2次元と呼ぶのかは知りませんが、引数の指定の仕方に間違いがあるからですね。

sum関数などと違い、大半の関数では複数範囲を指定するためにカンマで区切ってしまうと、本来入るべき種類の引数ではないとしてエラーになります。

また、sumif系の条件は一つの値を基準にしますので、(これを次元と呼んでるのかな?)範囲にある複数の値を指定すると、わかってもらえません。(ワイルドカードは別)

質問の意図をくめてるか分かりませんが、原因としてはそういったところです。
伊蔵さま

次元の定義はご察しの通りで、質問の意味もご理解頂いていると思います。

>引数の指定の仕方に間違い・・・
sumifs関数で今回の例では、どのように引数を指定すれば解が得られますか?
それとも、sumifs関数では解が得られないということでしょうか?
試してはいませんが、SUMPRODUCT関数を使えば簡単に出来るかもしれませんよ
マリ男さま

=SUMPRODUCT($B$2:$Z$14,$A$2:$A$14=AA2,$B$1:$Z$1>$AB$1,$B$1:$Z$1<=$AC$1)

結果は#value となってしまいました・・・

下記、配列関数では解が得られましたが、この関数、ブランクが配列内にあると、たまに?エラーとなってしまうことがあるので、sumifs関数でトライしている次第です。

{=SUM(($B$2:$Z$14)*($A$2:$A$14=AA2)*($B$1:$Z$1>$AB$1)*($B$1:$Z$1<=$AC$1))}
SUMPRODUCT関数の使い方は調べられましたか?

=SUMPRODUCT(($B$2:$Z$14)*($A$2:$A$14=$AA2)*($B$1:$Z$1>$AB$1)*($B$1:$Z$1<=$AC$1))

SUM関数でも
=SUM(INDIRECT(ADDRESS(MATCH($AA2,$A$1:$A$14,0),MATCH($AB$1,$A$1:$Z$1,0)+1)&":"&ADDRESS(MATCH($AA2,$A$1:$A$14,0),MATCH($AC$1,$A$1:$Z$1,0))))
>>2
昼の回答は私の勘違いですね。帰宅してPCで見たら指定自体はおかしくありませんでした。
ご推測のとおり、行方向と列方向からの指定によって対応すべきセルが見つけられない状態になっているようです。
勘違いでお気を悪くさせてしまい、大変申し訳ありません。

ところで、これは素朴な疑問なのですが、例示されている図では行列ともに重複項目がないように見えますが、
本来は重複項目がある作りになっているのですか?

ふと、ある日のある部品を探すだけならindexでいいんじゃないか?などと思ったもので…。
マリ男さま

sumproduct関数の区切り、勘違いしていました。

sum関数にアドレス関数、マッチ関数の組み合わせ、
このような関数組み合わせは使ったことがないので、
大変参考になりました。

ただ、条件範囲(日付)が連続していないので、偶々存在しない日付を
条件にしてしまうと、エラーとなってしまいますが・・・
伊蔵さま

重複はありません。
指定期間内の部品番号別合計を出すのが目的です。
>ただ、条件範囲(日付)が連続していないので、偶々存在しない日付を
>条件にしてしまうと、エラーとなってしまいますが・・・
それは、日付の部分のMATCH関数の照合の種類を変更すれば・・・
>>8
迅速な回答、驚きました。私は偶々夜更かししていますが・・

さて、ご指摘の件、それで済めばいいのですが、実は
指定期間内の合計を出すのが目的で、
この開始日と終了日は条件範囲に存在するか否かに関係なく
優先的に指定されるもです。
それでも合計を算出する必要があるので、この場合、sumproduct関数の方が、
適しているように思いますが・・・

>11
さすがに、この時間では頭が回らなかったようで
先程読み返してみて気付きました
なので、>10で書いたようにMATCH関数をいじれば出来ると思いますよ

どちらの式が適しているかは判断して下さい
> 列方向1行目(タイトル行)に条件範囲(例えば、日付)2、3 があるDB形式のエクセル2007で

この表はデータベース形式ではありませんよ。その点も確認されると、いいかもしれません。

存在しない日付が指定された場合でも、エラーが出ないようにとのことですが、[5]のマリ男さんのSUM関数のほうは、MATCH関数の第3引数を「1」にすると、一見良さそうに見えたのですが、期間の開始日のほうも存在しない日付の場合は、期間より前の日付が含まれてしまうようでした。
私は、OFFSETとMATCH関数を利用しようと思ってやろうと思いましたが、同じ原因でうまく行きませんでした。何か解決法があるのかなぁ?

で、SUMPRODUCTのほうは、本来の利用法以外の使い方ですから、難しいですよね。私の場合は、次のような書式で利用します。ちゃんと答えが出ますでしょうか? お試しください。

=SUMPRODUCT(($A$2:$A$14=$AA2)*($B$1:$Z$1>=$AB$1)*($B$1:$Z$1<=$AC$1),$B$2:$Z$14)
まじんさま

MATCH関数の第3引数を「1」にしても、うまく行かないので、悩んでいました。

ご提案頂いたsumproduct関数、上手く行きました。

有り難うございます。

ログインすると、残り2件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。