- ベストアンサー
エクセルのCOUNTIFについて
A,B,Cのセル内の数値の個数ををCOUNTIFで求めました。 普通にできたのですが、A,B,Cのセルに関数を入れて、 計算結果をCOUNTIFで求めようとしましたがNGでした。 関数の結果をカウントする方法がありましたらお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
計算結果に誤差を含んでいるからだと思います。 (B1-A1)*24を以下の式に置き換えてみてください。 =ROUND((B1-A1)*24,1)
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
No.1です。 >カウントできる様なのですが、条件によってカウントされない場合があります。 おそらく、浮動小数点誤差が原因だと思われます。 Excelでは、時間データは、シリアル値という小数で表されますが、 小数どうしの計算(特に引き算)をすると、誤差を生じます。 C列のデータは、見た目が「0.5」でも、実際は、 「0.499999999999992」 というような近似値になっている場合があります。 この場合は、「0.5」で検索してもカウントされないのです。 浮動小数点誤差については、以下のページを熟読して下さい。 http://pc21.nikkeibp.co.jp/special/gosa/ さて、今回の例では、C列の数式を以下のように変更すれば、回避出来ると思います。 C1に、 =TEXT((B1-A1),"[h]:mm")*24 これで、 =COUNTIF(C:C,0.5) で、「0.5」の数がカウントされます。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 範囲内に数式が入っていても、COUNTIFで出来ます。 どのような数式が入っていて、どのような結果になるのでしょうか? また、COUNTIF関数の方は、どのような数式にしているのでしょうか?
補足
補足です。 カウントできる様なのですが、条件によってカウントされない場合があります。 数式として。。。 A1に開始時間、B1に終了時間、C1に時間数 A1,B1の表示形式は時間(13:00) C1の表示形式は標準で、 C1の計算式は、(B1-A1)*24です。 C1は時間を0.5単位で表示しています。 このC列をCOUNTIFで0.5は何回。1.0は何回とカウントしています。 C列の結果はOKだったりNGだったりします。 0.5 ○ 1.0 ○ 1.5 ○ 2.0 ○ 2.5 × 3.0 ○ 3.5 × 4.0 × 4.5 ○ 5.0 × 原因がわかりません。。。
お礼
ありがとうございます。 解決しました。 誤差だったとは。。。