2016-08-30 76 views
-2

我正在嘗試使用MATCH函數在包含格式爲00:00的時間的列中搜索單元格。我嘗試過類似於MATCH("??:??",A:A)MATCH("?*:?*",A:A)的事情,但沒有運氣。如何形成2位數的正則表達式,然後是冒號,然後是2位數?時間格式的正則表達式

+1

你有沒有使用過正則表達式?你嘗試過哪些正則表達式? – Kyle

+1

存儲在單元格中的時間格式爲時間或文本?如果它被格式化爲時間,那麼實際值是您正在搜索的小數。另外,excel中的'match()'函數不會將regex作爲參數,所以regex並不是真正的方法。 – JNevill

+0

它以hh:mm的自定義格式存儲。是否沒有辦法使用'match()'並使用hh:mm格式作爲第一個參數,類似於如果找到任何單詞,第一個參數返回true的「ZZZ」? – KOB

回答

0

很多時候,在Excel中顯示給我們的並不是實際值。時間和日期就是這樣一個時間。一般來說,如果你輸入excel 3:55的時間,它會自動將它轉換爲excel的時間格式,這是一個十進制數字:0.163194444444444,但它會自動將它格式化爲「mm:ss」,就像你輸入的一樣。

因此...當您嘗試使用通配符=MATCH()時,由於單元格中的值實際上是該十進制數,因此您不會找到命中。

相反,您必須將要搜索的單元格的值轉換爲文本格式。你可以用=TEXT()公式來做到這一點。假設你的數據在A1開始,你可以把B1

=Text(A1, "mm:ss") 

現在從該公式返回值仍看起來像mm:ss格式,但它現在是文本。底層價值實際上是3:55。沒有有趣的生意。現在,您可以基於通配符搜索的"*:*"關閉此列:

=Match("*:*", B1:B10, 0) 

如果你想做到這一切在一個公式您可以使用數組公式(或CSE):

=Match("*:*", Text(A1:A10,"mm:ss"),0) 

輸入公式時使用Ctrl + Shift + Enter(而不是Enter)。