- ベストアンサー
エクセルのCOUNTIFでカウント結果が合わない問題について
- エクセルのCOUNTIFでカウント結果が合わない問題について解説します。
- COUNTIFを使ってカウント結果を取得する際に注意すべきポイントについて説明します。
- カウント結果が合わない場合の対処法についてご紹介します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
C1 の 2:00 を数値で小数点以下16桁まで表記すると 0.0833333333333333 となります。 一方 C3 の 2:00 を数値で小数点以下16桁まで表記すると 0.0833333333333334 となります。 つまり、C1とC3の値は違うことになります。 おそらくですが、これはエクセルが2進数で計算をしているための起こる浮動小数点数の誤差と言うことではないかと思います。 なので、C3に入る計算式は =TEXT(B1-A1,"hh:mm") にされれば 別のシート(この場合はSheet1に表あるとして)には =COUNTIF(Sheet1!C1:C3,"2:00") で、戻り値が2になると思います。
その他の回答 (4)
- kagakusuki
- ベストアンサー率51% (2610/5101)
カウント結果が合わない原因は、他の回答者の方々も仰っておられる様に浮動小数点数の誤差によるものだと思われます。 但し、浮動小数点数の誤差による影響は、表示された値よりも実際の値が僅かに+側にずれてしまう様に働く場合も勿論ありますが、ずれる方向は+側だけとは限らず、-側の方向にもずれる事がありますので、例えばC列の値が2:00以上2:01未満のデータの数をカウントする際には、「2:00よりも0.5秒未満(で尚且つ0.00000000000001日以上)の僅かな時間だけ前の時刻」よりも大きく「2:01よりも0.5秒未満(で尚且つ0.00000000000001日以上)の僅かな時間だけ前の時刻」未満のデータの数をカウントする様にしなければなりません。 ですから、御質問のC列の値が2:00以上2:01未満のデータの数を正しくカウントする関数は、Excelのバージョンが2007以降であれば次の様な関数になります。 =COUNTIFS($C:$C,">"&("2:00"-0.0000001),$C:$C,"<"&("2:00"+"0:1"-0.0000001)) また、Excelのバージョンが2007よりも前のものである場合には、次の様な関数になります。 =COUNTIF($C:$C,">"&("2:00"-0.0000001))-COUNTIF($C:$C,">="&("2:00"+"0:1"-0.0000001))
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.2の追加です。 Excelのバージョンが2007以降であれば次の数式が使えます。 =COUNTIFS(C:C,">=2:00",C:C,"<2:01")
お礼
回答ありがとうございました!
- bunjii
- ベストアンサー率43% (3589/8249)
>別シートでC列の2:00の数をCOUNTIFで数えたのですが帰ってくる数字が明らかに少なく計算が合いません。 Excelの内部処理で誤差が生じているためです。 =B1-A1≠2:00 >このような場合どのように対処すればちゃんとカウントされるのでしょうか? SUMPRODUCT関数を使うと良いでしょう。 =SUMPRODUCT((TEXT(C$1:C$3,"h:mm")="2:00")*1) 比較対象の値を文字列に変えて比較値を文字列で指定すれば計算誤差が除かれます。
お礼
回答ありがとうございました!
- mshr1962
- ベストアンサー率39% (7417/18945)
>別シートでC列の2:00の数をCOUNTIFで数えたのですが帰ってくる数字が明らかに少なく計算が合いません。 多分ですけど、A:C列に表示されてるのが、時分で秒が表示されてません。 なので、=COUNTIF(C1:C3,"2:00")だと秒単位で微妙な差異があるのではないでしょうか? 試しに、=COUNTIF(C1:C3,">=2:00")-COUNTIF(C1:C3,">=3:00")として確認してみてください
お礼
回答ありがとうございました!
お礼
回答ありがとうございます! 数式処理の変更が一番シンプルだったためベストアンサーに選ばさせていただきました!