質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

821閲覧

Autofilterにて時刻"0:00"以外を抽出するやり方について

quark87139

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/09 16:28

編集2021/12/10 01:11

いつも有識者の皆様、いつもありがとうございます。
自分なりに検索し取り組んだが、解決に至らなかったため、
ご質問させてください。

①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"より小さいつまりマイナス表記のある時間があるためでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/12/10 00:40

まったく異なる2つの質問になっています。②の質問は削除して、別質問として投稿してください。
hatena19

2021/12/10 00:42

差分の列のセルの書式設定はどうなってますか。 「時刻」ではマイナス表示はできないはずです。 文字列になっているのですか。
quark87139

2021/12/10 01:09

hatena19様 申し訳ございません。 取り急ぎ削除し、別質問として投稿させていただきます。 また差分の列のセルの書式は、[h]:mm;[赤]-[h]:mmとしており、 エクセルのオプションにて"1904年から計算する"にチェック入っています。
quark87139

2021/12/10 02:16

補足ですが、 .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以上と設定したところ、該当なしとなる
quark87139

2021/12/10 02:32

当初xlOrも試したのですが、同様に該当なしとなるためか全部抽出されてしまいました。 ※1つずつ動作確認したところ、フィルターは正しく動いてるが、 フィルター内の選択肢(チェック)が全て外されている状態 = 該当なし となります。
guest

回答1

0

ベストアンサー

"<>0"ではどうでしょう。

投稿2021/12/10 01:35

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quark87139

2021/12/10 02:12

一番最初に試したのが"<>0"なのですが、 該当なしとなっているためか、全部抽出されてしまいます。。
jinoji

2021/12/10 03:48

表示上では見えない1分未満の端数があったりしませんか?
quark87139

2021/12/10 04:19

どうやって確認できますでしょうか? セル上では0:00と表示されているので無いようには見えます・・・。 ちなみに標準に直すと2.66453525910038E-15と表示されます。 検証に手入力で0:00と入力してから標準に直したところ0と表示されました。 これが原因でしょうか?
jinoji

2021/12/10 04:33

おそらくそうだと思います。 1分以上 or マイナス1分以下 (イコール含めて)とかしたらどうでしょう。
quark87139

2021/12/10 05:18

頂いた案を踏まえ、 秒数は必ず0となるので、1秒以上 or マイナス1秒以下に設定してみました。 結果、無事抽出できました・・・! ありがとうございます!
quark87139

2021/12/10 05:23

簡単なコードではあるものの、 念のため、後者:後学のためにソースコード記載いたします。 .AutoFilter field:=4, Criteria1:=">" & TimeSerial(0, 0, 1), Operator:=xlOr, Criteria2:="<" & TimeSerial(0, 0, 1)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問