- ベストアンサー
エクセルで各セルそれぞれ四捨五入してからの合計を求めたいのです
エクセル2000です。 ワークシート関数でこんな場合どうすればよいでしょうか? 添付画像のようにA列に数値データがあります。 途中に空白(数式で ="" が表示されています。)のセルもあります。 このA列のデータを各セルそれぞれ四捨五入してからの合計を求めたいのです。 画像ではB列を作業列にして、 =IF(ISNUMBER(A2),ROUND(A2,0),0) と、="" への対応をして ROUNDして合計していますが、作業列を使わなくとも良い方法があればと思い質問いたしました。 途中の空白が、数式による ="" では無くほんとの空白であれば、 =SUMPRODUCT((ISNUMBER(A2:A11))*ROUND(A2:A11,0)) で、一発で求められるのですが・・・・・。 ご教示いただければ幸いです。 宜しくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#3です。負も対応できました。 =SUMPRODUCT((TEXT(A2:A11,"0")&"0")/10) # 後一歩が足りないんだよなあ。参考まで
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
参考までに Ctrl+Shift+Enterするのが面倒なら、以下のような数式で四捨五入した合計を求めることができます。 =SUMPRODUCT(ROUND((0&A2:A11)*1,0))
お礼
何度もありがとうございます。 正の数でうまくいくことを確認しました。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>=IF(ISNUMBER(A2),ROUND(A2,0),0) と、="" への対応をして ならば =IF(A2="",0,ROUND(A2,0)) の方が素直では? 作業列で良いと思うのですが、計算速度も速いですしね 例示のように負がないなら =SUMPRODUCT(TEXT("0"&A2:A11,"0")*1)
お礼
> =IF(A2="",0,ROUND(A2,0)) の方が素直では? 仰せのとおりです。 =SUMPRODUCT(TEXT("0"&A2:A11,"0")*1) なんという柔軟な発想なのでしょう! 感心しました。 ありがとうございます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>配列数式以外の方法では無理なのでしょうか? 空白セルがないとき使用できる、もともとのSUMPRODUCTの数式もCtrl+Shift+Enterは使っていませんが配列数式です。 このような計算をするには(ROUND関数を四捨五入に使う場合には)いずれの関数を使うにしろ、最終的には配列数式(=配列を取り扱った数式)で対応するしかありません。
お礼
ありがとうございます。 CSEを使う関数という意味で配列関数と呼びました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
以下の式を入力し、Ctrl+Shift+Enterで確定します。 =SUM(IF(ISNUMBER(A2:A11),ROUND(A2:A11,0),""))
お礼
さっそくありがとうございます。 やはり配列数式になってしまうのですね・・・。 配列数式以外の方法では無理なのでしょうか?
お礼
さらに、なんとまあ!! これで負数でもOKになりました。 ありがとうございます。