2016-08-30 150 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)。