- ベストアンサー
エクセルでゼロを条件的に表示させる方法
- エクセルのSAMIFを使用して、条件的にゼロを表示させる方法について教えてください。
- 現在エクセルで数値を入力し、その中の一部がゼロの場合は空白に、ゼロ以外の場合はその数値を表示するという処理を行いたいです。
- また、項目の並び順や名前が変わる可能性があるため、SUMIF関数を使用して自動的に計算する必要があります。どのような式を使用すれば良いでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
=IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) ではなく =IF(COUNTIF(火!$C$2:$G$86,$B6)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) として下さい。 元の式は「条件に合う物の合計が0であれば、空白にする。さもなければ、条件に合う物の合計を表示する」になってしまっています。 これでは「条件に合う物が存在しても、合計したら0になってしまう場合」も空白になってしまいます。 例えば「条件に合うけども0を入力した場合」とか「条件に合うけど、5と-5を入力した場合」とかも、空白になってしまいます。 やりたいのは「条件に合う物が存在しなければ空白にする。さもなければ、条件に合う物の合計を表示する」の筈です。 なので「COUNTIF」で「条件に合う物の個数」を数えて、その個数が0個の場合だけ空白にして、そうでなければ、SUMIFで条件に合う物のみの合計を求めます。 そのように変更したのが =IF(COUNTIF(火!$C$2:$G$86,$B6)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) の式です。
その他の回答 (6)
- bunjii
- ベストアンサー率43% (3589/8249)
>エクセルのSAMIFで、0入力をした場合、そのゼロを表示させたいのですが、どうしたらいいでしょうか? >自分が今入力している内容はこちらです。 「 =IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) 」 その数式ではSUMIF関数の結果が0のとき空欄になります。 IF関数の論理式を別のものに代えてください。 SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0 ↓ SUMPRODUCT((火!$C$2:$C$86=$B6)*ISNUMBER(火!$E$2:$E$86))=0 従って、数式全体を次のようにすれば良いことになります。 =IF(SUMPRODUCT((火!$C$2:$C$86=$B6)*ISNUMBER(火!$E$2:$E$86))=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86))
お礼
SUMPRODUCTという関数は知りませんでした。勉強になります!ありがとうございます! さっそく試してみます!
- kagakusuki
- ベストアンサー率51% (2610/5101)
>しかし、入力されていないところは空白のままにしたいのです。 その説明では、「入力されていないところ」とは何処のセルの事なのか解かりません。 「空白のままにしたい」のは「B6セルに何も入力されていない場合にのみ」なのでしょうか、それとも「火!C2:G86に何も入力されていない場合にのみ」なのでしょうか、或いは「B6セルに何も入力されていない場合と、火!C2:G86に何も入力されていない場合のどちらの場合であっても」なのでしょうか? > 自分が今入力している内容はこちらです。 > =IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) その関数では、「B6や火!C2:G86が空欄になっている場合に何も表示しない」という関数ではなく、「SUMIF関数の計算結果が0の場合に何も表示しない」という関数になってしまっています。 ですから、もし「B6が空欄になっている場合に何も表示しない」様にするのでしたら次の様な関数にする必要があります。 =IF($B6="","",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) 又、「『B6が空欄になっている場合』と『火!C2:G86に数値が入っていない場合』のどちらの場合においても何も表示しない」様にするのでしたら次の様な関数にする必要があります。 =IF(AND($B6<>"",COUNT(火!$C$2:$G$86)),SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86),"") 又、「『B6が空欄になっている場合』や『火!C2:G86が空欄になっている場合』には何も表示しないものの、『火!C2:G86に数値ではなく文字列のみが入力されていて、尚且つB6が空欄ではない場合』には『(0等の)SUMIF関数の計算結果』を表示する」様にするのでしたら次の様な関数にする必要があります。 =IF(AND($B6<>"",COUNT(火!$C$2:$G$86)+COUNTIF(火!$C$2:$G$86,"*?")),SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86),"")
お礼
すいません。説明足らずでした。 自分が言いたかったのは、2番目の「火!C2:G86に何も入力されていない場合にのみ」のやつでした。いくつもの状況に合わせてのご回答いただき、ありがとうございます!
- kkkkkm
- ベストアンサー率66% (1719/2589)
=IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,IFNA(IF(MATCH(0,火!$E$2:$E$86,0),0,""),""),SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) これでいかがでしょう。
お礼
IFNAに変わったのですね!なるほど! さっそく試してみます!
- kkkkkm
- ベストアンサー率66% (1719/2589)
No1訂正です・。 火!$C$2:$G$86に数値があるのじゃなかったですね。No1は無視してください。
お礼
ありがとうございます!了解です!
- trytobe
- ベストアンサー率36% (3457/9591)
IF(条件,成立のとき,不成立のとき) の成立と不成立が逆、ということでしょうか。 『自分が今入力している内容はこちらです。 =IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,"",SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86))』を、 =IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86),"") にするとか。範囲「火!$E$2:$E$86」の内容にもよりますが・・・。
お礼
ご回答ありがとうございます。 範囲内容が空白と0があるので、それでは認識されなかったんです。回答してくださったのに、申し訳ありません。
- kkkkkm
- ベストアンサー率66% (1719/2589)
=IF(SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)=0,IF(COUNT(火!$C$2:$G$86)<>0,0,""),SUMIF(火!$C$2:$G$86,$B6,火!$E$2:$E$86)) でいかがですか。
お礼
ご回答ありがとうございます。 試してみます!!
お礼
とても分かりやすい説明まで添えていただき、ありがとうございます! さっそく試してみます!