适用于COUNTIF的Google表格模式匹配/ RegEx

时间:2016-11-09 20:28:52

标签: regex google-sheets pattern-matching

Google表格的模式匹配文档没有帮助。我一直在阅读和搜索一段时间,但找不到这个特殊问题。也许我很难找到正确的搜索条件,但问题出在这里:

我有几个符合此格式的数字(部件号):##-####

类别可以通过部件号定义,即50-03##是一个产品类别,其余2个数字是特定于模型的。

我一直试图这样做:

=countif(E9:E13,"50-03[123][012]*")

E9:E13包含格式化为文本的部件号。如果我以任何其他方式格式化,由于Google表格认为我正在写日期或尝试进行算术运算,因此数值显示已经搞砸了。)

每次都返回0,除非我改为:

=countif(E9:E13,"50-03*")

所以看起来通配符工作,但模式匹配不行?

2 个答案:

答案 0 :(得分:11)

正如您所指出的那样,Wiktor提到COUNTIF只支持通配符。

有许多方法可以做你想要的,仅举两个名字

=ArrayFormula(SUM(--REGEXMATCH(E9:E13, "50-03[123][012]*")))

=COUNTA(FILTER(E9:E13, REGEXMATCH(E9:E13, "50-03[123][012]*")))

答案 1 :(得分:0)

对于像您这样的问题,这确实是一个很大的锤子,但是您可以使用QUERY来执行以下操作:

=QUERY(E9:E13, "select count(E) where E matches '50-03[123][012]' label count(E) ''")

label位是为了防止QUERYcount()列添加自动标头。

这种方法的好处是您也可以拉入其他列。假设在H列中,每个零件都有许多订单。然后,您可以取两个单元格,同时显示零件数和订单总数:

=QUERY(E9:H13, "select count(E), sum(H) where E matches '50-03[123][012]' label count(E) '', sum(H) ''")

我通常在$searchEngine上发现此问题,但没有注意到我将another question与类似问题和其他相关答案相关联。