Google Sheets:如何让FILTER支持多字符串匹配而非仅精确匹配?
嘿,我明白你的痛点——精确匹配只能抓单一版本,但你需要覆盖10.0.x全系列对吧?其实不用纠结把正则硬套进FILTER,有几个更简单的方案,甚至不用正则也能搞定:
方法1:用SUMIFS+通配符(最简便)
Excel的SUMIFS本身支持通配符*,它可以匹配任意长度的字符。针对你的需求,直接写:=SUMIFS(C:C, A:A, "Safari", B:B, "10.0.*")
- 这个公式会自动筛选出A列是Safari且B列以
10.0.开头的所有行,然后对对应的C列数值求和。不管后面跟着什么数字(比如10.0.1、10.0.2甚至10.0.99)都能命中,完全不用复杂函数,新手也能快速上手。
方法2:FILTER+REGEXMATCH(灵活适配复杂规则)
如果你确实想用正则来实现(比如未来要匹配更复杂的版本格式,比如带字母后缀的10.0.1-beta),可以把REGEXMATCH作为FILTER的条件之一:=SUM(FILTER(C:C, A:A="Safari", REGEXMATCH(B:B, "^10\.0\.\d+$")))
- 简单解释下正则规则:
^:锁定字符串开头,确保版本号从10.0.开始10\.0\.:转义.(因为正则里.代表任意字符),精确匹配10.0.\d+:匹配1个或多个数字(对应版本号的最后一段)$:锁定字符串结尾,避免匹配带后缀的版本(如果不需要这个限制,直接去掉$就行)
方法3:用文本提取函数(适配旧版Excel)
如果你的Excel版本不支持REGEXMATCH(比如2019及更早版本),可以用LEFT或者TEXTBEFORE来提取版本前缀:=SUM(FILTER(C:C, A:A="Safari", LEFT(B:B, 4)="10.0"))
或者更稳妥的(如果版本号长度不固定):=SUM(FILTER(C:C, A:A="Safari", TEXTBEFORE(B:B, ".", 3)="10.0"))
- TEXTBEFORE的作用是提取B列字符串中第3个
.之前的内容,也就是10.0,这样就能精准匹配所有前两段是10.0的版本,兼容性拉满。
内容的提问来源于stack exchange,提问作者Al C
相关产品推荐
相关产品推荐

