- ベストアンサー
関数について教えて下さい
現在健康管理の資料で使用している関数の計算式を、他の資料でもコピーして使用したかったのですが、問題の有る事に気が付きました。 〔問題点と質問〕 利用しようとしている計算式 =ROUND(IF(SUM(B4:B34)=0,0,SUM(B4:B34)/COUNTA(B4:B34)),1) この式は、1ヶ月(1~31日)間測定した体重の平均値を出すのに使用しております。 この式を、別の血圧測定の管理資料にも利用出来たらと考えたのですが、平均値を出す基データのセルには計算式が入っております。 ※この計算式は、3回測定して、その平均値を算出するもの。 そのため、測定をしなかった日は”0”表示となってしまう。 利用しようとした計算式を、そのまま当てはめると、”0”表示も1回として計算するので、測定をしなかった日が有ると、当然数値が少なく表示され、正しい計算結果が得られません。 質問は、この”0”表示を計算させない(無視)やり方には、どんな法方が有るのか教えて欲しいのですが。 素人ですので、恐縮ですが分かり易く教えて頂けると有り難いのですが。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
COUNTA(B4:B34) ですべてをカウントしているところですが、0以外をカウントするようにすればどう? COUNTIF(B4:B34,"<>0") ←0じゃ無いとき とか、 COUNTIF(B4:B34,">0") ←0より大きいとき とか…。
その他の回答 (3)
- hotikisuss
- ベストアンサー率36% (18/49)
なるほど。このようにする訳ですね。 =ROUND(IF(SUM(B4:B34)=0,0,SUM(B4:B34)/COUNTIF(B4:B34,"<>0")),1) ちゃんと計算できそうです。ちなみにこの式は空白をカウントしますから、もし元の式で「0」じゃなくて空白になる場合があれば、もう少し工夫が必要ですね。
お礼
早速の返事有難う御座いました。 おかげさまで問題が解決しました。
- gyouda1114
- ベストアンサー率37% (499/1320)
どうぞ =ROUND(IF(SUM(B4:B34)=0,0,SUM(B4:B34)/COUNTIF(B4:B34,"<>0")),1) 平均-0を除いた平均 http://www.excel-jiten.net/apply_funcs_001/avg_without_0.html 初心者のエクセル(Excel)学習・入門-エクセル関数の使い方-数学/三角関数-ROUND関数とは ROUND関数 関数の種類 数学/三角関数 書式 ROUND(数値,桁数) ROUND関数の使い方 http://excel.onushi.com/function/round.htm
お礼
早速の返事有難う御座いました。 おかげさまで問題が解決しました。
- hotikisuss
- ベストアンサー率36% (18/49)
まず前提として、「0」という値があっても、それをカウントして平均するという式の挙動は合理性があります。体重の場合は「0」ということはありえませんが、一般的に「0」という値がセルに入っているということは、「0」という値があるのだ、と判断して正しいわけですから。 したがって最も正当な解決策は、元の式で測定しなかった日の値を「0」ではなくてNULL(値なし)にすることでしょう。もしそれができなければ、自分で処理しなければなりません。 たとえば、今はB列を使って処理をしていますが、次のような式をC列の行4~34に入れて、「0」の値を消します。 =IF(B4=0,"",B4) そして次の式を使います。 =ROUND(IF(SUM(C4:C34)=0,0,SUM(C4:C34)/COUNT(C4:C34)),1) このとき、COUNTA()ではなくCOUNT()関数を使ってください。
お礼
早速の返事有難う御座いました。 おかげさまで問題が解決しました。 感謝。