2017-07-05 25 views
0

我想使用AutoFilter過濾Excel數據,但不知何故,它不工作。 我想過濾的數據表示時間,格式爲00:00至23:59。 具體來說,我試圖按照「00」到「23」,或「00:」到「23:」這樣的小時過濾,無論哪一個都有效。 但是,它不工作,並且它們都沒有被過濾。帶符號(*)的VBA自動過濾器不工作

假設有一張表,如

| ID |日期|時間|
| 0 | 7/5 | 00:00 |
| 1 | 7/5 | 00:20 |
| 2 | 7/5 | 00:35 |
| 3 | 7/5 | 00:47 |
| 4 | 7/5 | 00:58 |
| 5 | 7/5 | 01:03 |
| 6 | 7/5 | 01:15 |
| 7 | 7/5 | 01:27 |
| 8 | 7/5 | 01:48 |

我測試了以下宏:

Selection.Autofilter Field:=3, Criteria1:="=00*" 

希望我能得到的前5行中的數據作爲其次「00」開頭。我查找了如何在AutoFilter中設置「開始」的信息,並且我發現可以使用星號(*)。但是,這不起作用,並且沒有任何行被過濾。 有趣的是,如果我試過如下:

Selection.Autofilter Field:=3, Criteria1:="00:20" 

它工作得很好,它過濾的第二行只有在時間是「00:20」。

爲什麼我的第一個宏*不工作?我嘗試了許多不同的方法無濟於事。有人能告訴我爲什麼這不起作用嗎?

+0

可以確認的時間是不是文本格式? – pnuts

+1

'Criteria1 =「= 00 *」'-----''Criteria1:=「= 00 *」'(不要忘記參數名稱後的*列*)。 –

+0

感謝您指出這一點!這是一個錯字,在真正的程序中,它有冒號。 –

回答

0

Excel將時間值視爲十進制數。一種方法是插入名爲「小時」的幫助列,並在D2中輸入以下公式:

=HOUR(C2) 

並將其複製下來。

現在篩選數據像下面...

Range("$A$1:$D1").Autofilter Field:=4, Criteria1:="=0" 
+0

謝謝!我是Excel宏的新手,並不知道數據有不同的類型。我認爲他們都是字符串。我用它作爲提示,並設法使其起作用。感謝大家的幫助! –

+0

@ J.Doe不客氣!很高興按預期工作。 – sktneer