REGEXMATCH结合SWITCH函数匹配链接始终返回other,求解决方法
哦,我知道问题出在哪了!你用的SWITCH公式写法不对——SWITCH的第一个参数是要匹配的表达式,你把A1(完整的URL字符串)放那,后面的case却是REGEXMATCH返回的TRUE/FALSE,这俩完全没法匹配,所以它只能一直返回最后的"other"。
给你几个靠谱的解决方法:
方法1:用IFS函数(最直观的多条件判断)
IFS天生就是用来处理这种多条件分支的,语法刚好对应「满足条件就返回对应结果」的需求,而且顺序判断,第一个满足的就生效:
=IFS(REGEXMATCH(A1, "amazon\."), "amazon", REGEXMATCH(A1, "lifehacker\."), "LFH", REGEXMATCH(A1, "engadget\."), "ENG", TRUE, "other")
这里要注意正则里的\.——因为.在正则里是「匹配任意单个字符」的通配符,不转义的话,会误匹配像"amazon1"、"amazony"这类字符串,转义后才会精确匹配域名里的点(比如amazon.es、amazon.com里的那个点)。
方法2:修正SWITCH的写法
如果你非要用SWITCH,得把第一个参数改成TRUE,这样后面的case就会检查REGEXMATCH返回的布尔值是否为TRUE,匹配到第一个TRUE就返回对应结果:
=SWITCH(TRUE, REGEXMATCH(A1, "amazon\."), "amazon", REGEXMATCH(A1, "lifehacker\."), "LFH", REGEXMATCH(A1, "engadget\."), "ENG", "other")
方法3:批量处理整列(数组公式)
如果要一次性处理A列所有单元格,可以用ARRAYFORMULA搭配IFS,不用手动下拉公式:
=ARRAYFORMULA(IF(A:A="", "", IFS(REGEXMATCH(A:A, "amazon\."), "amazon", REGEXMATCH(A:A, "lifehacker\."), "LFH", REGEXMATCH(A:A, "engadget\."), "ENG", TRUE, "other")))
这个公式会自动跳过A列的空单元格,给有内容的单元格返回对应结果。
内容的提问来源于stack exchange,提问作者Uniextra
相关产品推荐
相关产品推荐

