いつも有識者の皆様、いつもありがとうございます。
自分なりに検索し取り組んだが、解決に至らなかったため、
ご質問させてください。
①Autofilterを適用する上で、時間が"0:00"以外の時間を抽出する方法について
VBA
1with wb.Range("A2:D" & mRow) 2 3'▼案① 4.AutoFilter field:=4, Criteria1:="<>" & TimeSerial(0, 0, 0) 5 6'▼案① 7.AutoFilter field:=4, Criteria1:="<>" & "0:00" 8 9'▼案③ 10.AutoFilter field:=4, Criteria1:="<" & TimeSerial(0, 0, 0), Operator:=xlAnd, Criteria2:=">" & TimeSerial(0, 0, 0) 11 12'▼案④ 13.AutoFilter field:=4, Criteria1:="<" & "0:00", Operator:=xlAnd, Criteria2:=">" & "0:00" 14 15End with 16
当初は案①のコードで問題なく作動すると思っていたが、正しく抽出できず
いくつかのやり方を試行するもうまくいきません。どうやったら正しくフィルタ掛けることができるかご教示頂けないでしょうか。
文字列の問題なのか、そもそも時間自体"0:00"という概念がないまたは24時間として見なされている?
(補足)
0:00より大きいといったような形にしない理由としては"0:00"より小さいつまりマイナス表記のある時間があるためでしょうか?
まったく異なる2つの質問になっています。②の質問は削除して、別質問として投稿してください。
差分の列のセルの書式設定はどうなってますか。
「時刻」ではマイナス表示はできないはずです。
文字列になっているのですか。
hatena19様
申し訳ございません。
取り急ぎ削除し、別質問として投稿させていただきます。
また差分の列のセルの書式は、[h]:mm;[赤]-[h]:mmとしており、
エクセルのオプションにて"1904年から計算する"にチェック入っています。
補足ですが、
.AutoFilter field:=4, Criteria1:="<" & TimeSerial(0, 0, 0)
↑時刻がマイナスとなっている分だけ抽出はできることは確認できています。
.AutoFilter field:=4, Criteria1:="<" & TimeSerial(0, 0, 0), Operator:=xlAnd, Criteria2:=">" & TimeSerial(0, 0, 0)
↑AND条件にて0以下0以上と設定したところ、該当なしとなる
xlOr
当初xlOrも試したのですが、同様に該当なしとなるためか全部抽出されてしまいました。
※1つずつ動作確認したところ、フィルターは正しく動いてるが、
フィルター内の選択肢(チェック)が全て外されている状態 = 該当なし となります。
回答1件
あなたの回答
tips
プレビュー