- ベストアンサー
SUMIFとIFの組み合わせ方
- SUMIF関数で合計する条件と範囲を変えたい場合について、IFとSUMIFの使い方を教えてください。
- IF関数を使用して、B6かC6のどちらかに値が入っている場合に処理を行い、両方に値が入っているか値が入っていない場合は空欄とする式です。
- 上記のIF関数に対して、SUMIF関数を使用して指定した範囲から合計金額を集計する式です。条件によって範囲が異なるため、SUMIF関数で条件と範囲を変える方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>値が0のままです。 なってしまっている原因は質問者様が作られた =IF(AND($B6<>0,$C6=0),SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$E:$E,$C6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4),IF(AND($B6=0,$C6<>0),SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$C:$C,$B6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4),"")) という関数が、 AND($B6<>0,$C6=0) という条件では入力【契約書】!$E:$E列の値が$C6に等しい値、即ち0となっているもののみを合計する様になっていて、 AND($B6=0,$C6<>0) という条件では入力【契約書】!$C:$C列の値が$B6に等しい値、即ち0となっているもののみを合計する様になっているという、どちらの場合も条件範囲の値が0となっている行のみの合計を求める様な関数となっているからではないかと思います。 御質問の件ですが、条件式が AND($B6<>0,$C6=0) や AND($B6=0,$C6<>0) になっているという事は、B6セルやC6セルに入る値は必ず数値(或いは日時)データであると考えて宜しいのでしょうか? もしそうなら以下の様な関数にされては如何でしょうか? 【IFの元、B6もしくはC6に値が入っているなら処理をする、両方に値が入っているか値が入っていないなら空欄】 =IF(COUNT($B6,$C6)=1,IF(SUM($B6),"勘定","項目"),"") 【上記IFに対してSUMIFで必要な範囲から合計金額を集計】 =IF(COUNT($B6,$C6)=1,SUMIFS(入力【契約書】!$D:$D,IF(SUM($B6),入力【契約書】!$C:$C,入力【契約書】!$E:$E),SUM($B6,$C6),入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4),"")
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>B6もしくはC6に値が入っているなら処理をする、 >両方に値が入っているか値が入っていないなら空欄 >=IF(AND($B6<>0,$C6=0),"勘定",IF(AND($B6=0,$C6<>0),"項目","")) 基本的なIFの数式の構成は間違っていません。 これで数字が出ないのなら、 ●勘定の時(B列に数字が入っているとき) SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$E:$E,$C6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4) ●項目の時(C列に数字が入っているとき) SUMIFS(入力【契約書】!$D:$D,入力【契約書】!$C:$C,$B6,入力【契約書】!$I:$I,D$3,入力【契約書】!$J:$J,D$4) というそれぞれのSUMIFSの数式の条件の与え方が、アナタの(ナイショの)シートの実態と合ってないせいです。 もう一度それぞれ落ち着いて、正しいSUMIFSの数式の条件を与えて計算してください。 上述で切り出したSUMIFSの部分だけを別セルに記入して、それぞれ意図した集計が出来ているか検算してみるのも良い方法の一つです。
- msMike
- ベストアンサー率20% (364/1804)
》 =IF(AND($B6<>0,$C6=0),"勘定",…) その式を入力するセル・アドレスは?
補足
とても具体的な回答ありがとうございました。 「0を合計する式に」と言われてハッとしました。 AND($B6<>0,$C6=0)とAND($B6=0,$C6<>0)を交換したら取りあえず動いたので感謝です。 =IF(COUNT($B6,$C6)=1からも試してみました。 【IFの元、B6もしくはC6に値が入っているなら処理をする~】の説明が正しくなかったです、すみません。 ただしくは 【IFの元、B6もしくはC6に値が入っているなら、B6の場合はB6に必要な「範囲と条件を合計」、C6の場合はC6に必要な「範囲と条件を合計」】 としたいのですが、どうも書式が長くなってしまって良くない気がします。 でもこの場合IFを重ねていくしかないでしょうか?