- ベストアンサー
EXCELの関数について
EXCELの関数について エクセルの関数で複数条件の場合の計算について 例 A列…日付 B列…支店名 C列…処理科目 D列…金額 ある支店の日付の範囲を指定し科目別金額の合計値を別シートに算出したいのですが、 SUMIF関数では、条件の範囲が設定できないみたいなので SUMPRODCUTを使っても同一列での条件設定でうまくいきません。 なにかうまい方法はありませんか
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
回答No2,3です。何べんもすみません。最終的にはB5セルへの入力の式は次の式がよいでしょう。 =IF(OR(ISBLANK($B$1:$B$3)>0,B$4=""),"",(SUMPRODUCT((Sheet1!$A$2:$A$1000>=$B$2)*(Sheet1!$A$2:$A$1000<=$B$3)*(Sheet1!$B$2:$B$1000=$B$1)*(Sheet1!$C$2:$C$1000=B$4)*Sheet1!$D$2:$D$1000)))
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! すでに回答は出ていますので、参考程度で・・・ ↓の画像のようにSheet1のデータをSheet2にまとめるようにしてみました。 Sheet2のA2~C2セルに条件を入力すればその期間のデータの合計を表示させるようにしています。 尚、日付はシリアル値でSheet2の項目はあらかじめ入力されているものとします。 Sheet2のB5セルに =IF(OR(A5="",COUNTBLANK($A$2:$C$2)),"",SUMPRODUCT((Sheet1!$A$2:$A$1000>=$B$2)*(Sheet1!$A$2:$A$1000<=$C$2)*(Sheet1!$B$2:$B$1000=$A$2)*(Sheet1!$C$2:$C$1000=A5),Sheet1!$D$2:$D$1000)) という数式を入れ、オートフィルで下へコピーすると 画像のような感じになります。 これで条件が色々変化しても対応できると思います。 数式はSheet1の1000行目まで対応できるようにしていますが データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば幸いです。m(__)m
お礼
ありがとうございました。 画像までつけていただきありがとうございます。 無事できました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。 B5セルへは次の入力式でよかったですね。 =IF(OR(ISBLANK($B$1:$B$3),B$4=""),"",(SUMPRODUCT((Sheet1!$A$2:$A$1000>=$B$2)*(Sheet1!$A$2:$A$1000<=$B$3)*(Sheet1!$B$2:$B$1000=$B$1)*(Sheet1!$C$2:$C$1000=B$4)*Sheet1!$D$2:$D$1000)))
- KURUMITO
- ベストアンサー率42% (1835/4283)
シート1にお示しの式があるとして1行目には項目名が各データは2行目以降にあるとします。 シート2に答えの表を作るとして、A1セルには支店名と文字を入力してB1セルに支店名を、A2セルには開始日と入力してB2セルに範囲を指定するときの開始日を、A3セルには終了日と入力して範囲を指定するときの終了日を、A4セルには科目名と入力してB4セルから横方向に科目名を、A5セルには合計金額の文字を入力します。 B5セルには次の式を入力して横方向にオートフィルドラッグします。 =IF(OR(ISBLANK($B$1:$B$3),B$4=""),"",(SUMPRODUCT((Sheet1!$A$2:$A$1000>=$B$2)*(Sheet1!$B$2:$B$1000=$B$1)*(Sheet1!$C$2:$C$1000=B$4)*Sheet1!$D$2:$D$1000)-SUMPRODUCT((Sheet1!$A$2:$A$1000>$B$3)*(Sheet1!$B$2:$B$1000=$B$1)*(Sheet1!$C$2:$C$1000=B$4)*Sheet1!$D$2:$D$1000)))
- keithin
- ベストアンサー率66% (5278/7941)
例:4月1日から30日までの,名古屋支店の,交通費。 =SUMPRODUCT((A1:A100>=DATE(2010,4,1))*(A1:A100<DATE(2010,5,1))*(B1:B100="名古屋支店")*(C1:C100="交通費"),D1:D100)
お礼
ありがとうございました。無事出来ました。
お礼
ありがとうございました。無事できました。 ( )の設定が間違っていたみたいでした。