質問

終了

Excelのオートフィルタについてです。
時間差の値を出しているセルがあります。
開始時刻と終了時刻の差が1時間であれば「1:00」と表示。

オートフィルタオプションで、「1:00と等しい」とするとそのセルは抽出されますが、「1:00以上」と設定すると抽出されません。

しかしほかの値はどちらの条件でも抽出可能です。
「1:31」(1時間31分)など。
なぜでしようか?

  • 質問者:モバイルメール
  • 質問日時:2011-03-24 19:32:35
  • 0

試してみると、確かにそうなる場合がありますね。
下記のようにして実験してみた。(Excell2000)
列⇒C列 D列 E列  F列(数値形式にして、小数点以下20桁表示)

2行 2:00 1:00 C2-D2 =E2
3行 3:00 2:00 C3-D3 =E3
4行 4:00 3:00 C4-D4 =E4
5行 5:00 4:00 C5-D5 =E5
C3:C5は、C2をドラッグして作成
D3:D5は、D2をドラッグして作成 (ドラッグして入力しないと問題の現象は起こらない)
上記のようにした場合、当然E2:E5は全て1:00 という表示になる。
これを、E列でフィルタをかけると、1:00と等しい、の条件だと2,3,4,5行が全て出るが、1:00以上、の条件だと2,3行しか出ない。

そこで、F列に数値形式にして小数点以下20桁まで表示さてみたら値が違う。F4,F5は小さい値になっている。
F2⇒ 0.0416666666666667
F3⇒ 0.0416666666666667
F4⇒ 0.041666666666666
F5⇒ 0.041666666666667

こういった現象を防ぐには、E列を次のようにするといいと思う。
=text(C2-D2,"hh:mm")*1

===補足===
最初の説明は抽象的で分かりづらいと思い、削除して回答しなおしました。
ポイントは3つですね。
(1)小数点を含む数値を扱う場合、誤差により思ったとおりの動作にならない場合があるため誤差の影響を無くす工夫が必要。
(2)小数点を含む数値をドラッグして入力すると、キーボードから入力した場合とは異なる場合がある。しかも見た目はまったく区別つかない(今回試してみて初めて知りました)。ドラッグによる入力は誤差を大きくする原因の一つだが、他にも原因があるかもしれない。
(3)オートフィルタは意図した動作をしない場合がある。(今回試してみて初めて知りました)

  • 回答者:Port (質問から5時間後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

とても詳しく回答頂き、また検証までありがとうございました。最初はいまいちイメージが湧かなかったのですが、更なる回答でとてもよくわかりました。ありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る