• ベストアンサー

続 エクセル イレギュラーなSUM関数

先程こちらでhttp://oshiete1.goo.ne.jp/qa5428194.html イレギュラーなSUM関数を質問しお答えいただきましたが 新たに問題が出ましたのでもう一度質問いたします *さきほどの質問の内容はこちらです* A列B列があり A5にはA1~A4の合計のSUM関数が入っています。 B5にもSUM関数を入れたいのですが B1~B4はイレギュラーな事があった場合のみ数字を入力し B5にはB1~B4に入力された数字の合計と B列に何も入力されていない隣のA列の合計を表示させたいのです。 例えるなら A1~A4に3を入力 A5はSUM関数がはいっているので12が表示されているとして B列はB1~B3は未入力 B4に7が入力された場合 B5にはA1~A3とB4の合計の16が表示されるようにしたいのです。 B4に7を入力したので隣のA4の3は合計しないという事です。 *回答はこちらです* 回答1 配列関数で =SUM(IF(B1:B4="",A1:A4,B1:B4)) と入力して、Ctrl+Shift+Enterで決定したら、式が{}でくくられて配列関数になります。 式の意味は B1~B4が空白の場合は、A1~A4の値を、それ以外はB1~B4の値を出して合計 回答2 =SUMPRODUCT(NOT(B1:B4)*A1:A4+B1:B4) あたりですかね。not関数のかわりにisblank関数の方が判りやすい かもしれないけど。 TRUE/FALSEの論理値は、四則演算にぶち込むと1/0の数値として扱 われます。また、空は四則演算にぶち込むと0の数値として扱われ ます。だから、「B列が空である」がFALSEならA列とのかけ算はゼ ロになりB列の値が加算され、TRUEならA列の値に1をかけて0を足し たことになります。後はそれを1行目から4行目にわたって配列とし て計算して合計してくれるsumproduct関数に放り込むだけ。 問題はこの方法だと B列に何も入力しない場合、A列の合計がB5に出て来てしまいます。 B列に何も入力しない場合、B5にも何も入力しないようにしたいのです。 ちなみに先程は記述しませんでしたが B列には自動で数字に〔〕が付くようにユーザー定義で指示していて B5はB列が未入力で合計が0でも〔0〕と表示されないように ユーザー定義で "〔"#"〕";;;が入っていてます。 やりたい事をまとめると ●B列には自動で数字に〔〕を付ける ●B1~B4に数字が入力された場合はB5に  B1~B4の合計とB列に何も入力されていない隣のA列の合計を表示させたい  がB列が未入力ならB5に何も表示しない ややこしくて申し訳ありません。 そして確認不足で申し訳ありませんでした。 どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆こんな方法はいかがでしょう A5=SUM(A1:A4) B5=IF(COUNT(B1:B4),SUMIF(B1:B4,"",$A$1:$A$4)+SUM(B1:B4),"") ★B5の式はEnterで式を確定して、下図の例では右にコピー ★B列に「0」を入力されることも考慮して、B1:B5の表示形式は ★ユーザー定義で、"["0"]" とします

osiete_01
質問者

お礼

シンプルですごくいいです! その上、0を入力する事も考慮いただきまして ありがとうございます!0を入力する事もあるのを気付いていませんでした!

その他の回答 (3)

回答No.4

#2です <<追加>> B列に数値しか入らないなら =SUM(A5,B1:B4,-SUMIF(B1:B4,"<>",A1:A4)) 逆もまた然り =SUM(SUMIF(B1:B4,"",A1:A4),B1:B4) >●B列には自動で数字に〔〕を付ける >B列には自動で数字に〔〕が付くようにユーザー定義で指示していて でOK。 でも正の値しか入力しないのかな

osiete_01
質問者

お礼

正の値のみ入力します こちらではBが未入力の時にはB5にはAの合計が出て来てしましたした でも気に掛けてくれて2度も回答くださってありがとうございました!

回答No.2

足したものを引けばよいような? =IF(COUNT(B1:B4)=0,"", SUM(A5,B1:B4,-SUMIF(B1:B4,">="&MIN(B1:B4),A1:A4)))

osiete_01
質問者

お礼

シンプルですごくいです! ありがとうございました!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

ついでに B列に入力されている文字数を配列関数で出して見ます。 B6セルに =SUM(LEN(B1:B4)) Ctrl+Shift+Enter 意味は、B1~B4の文字の長さを出して合計します。 全てが未入力であれば 0ですね。 IF文と組み合わせれば、 =IF(SUM(LEN(B1:B4))=0,"",SUM(IF(B1:B4="",A1:A4,B1:B4))) こんな感じでしょうか。 これを機会に エクセル 配列関数について勉強してみると良いです。 Webで検索してみてください。

osiete_01
質問者

お礼

早速のご回答ありがとうございました。 こちらの方法で出来たのですがB6のセルに 数字が表示されてしまうのはちょっと… 表示させない方法もあるとは思いますがシンプルにしたかったので ポイントナシでスミマセン