質問: 続 エクセル イレギュラーな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に何も表示しない ややこしくて申し訳ありません。 そして確認不足で申し訳ありませんでした。 どうぞ宜しくお願い致します。
回答: ◆こんな方法はいかがでしょう 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"]" とします