LibreOffice中基于A列通配符匹配设置B列值的问题求助
哈哈,我明白问题出在哪了!你原来的公式用了=精确匹配,Excel会把"doctor*"当成完整的文本——也就是说,只有当A2单元格内容完全等于"doctor*"(包括星号)时才会返回2.3,而不是匹配任何以doctor开头的内容,这就是通配符没生效的原因~
下面给你几个可行的解决方案:
方案1:用COUNTIF搭配通配符(最简单直接)
COUNTIF函数天生支持*这类通配符,完全符合你的需求,试试这个公式:
=IF(OR(COUNTIF(A2,"doctor*"),COUNTIF(A2,"Fysio*"),COUNTIF(A2,"Admin*")),2.3,0)
COUNTIF(A2,"doctor*")会检查A2是否以doctor开头(*代表后面可以跟任意字符),匹配成功返回1,否则返回0。OR函数用来判断三个条件里是否有任意一个成立。- 只要有一个条件满足,
IF就返回2.3,否则返回0。
方案2:用LEFT函数匹配前缀
如果你不想用COUNTIF,也可以用LEFT函数直接提取单元格开头的字符来判断:
=IF(OR(LEFT(A2,6)="doctor",LEFT(A2,5)="Fysio",LEFT(A2,5)="Admin"),2.3,0)
LEFT(A2,6)会提取A2的前6个字符(因为doctor是6个字母),和"doctor"对比就能判断是否以它开头。- 注意调整
LEFT的第二个参数:Fysio和Admin都是5个字符,所以用LEFT(A2,5)。
额外补充:区分大小写的匹配(如果需要)
默认情况下,COUNTIF和LEFT都是不区分大小写的(比如会匹配DoctorSmith或fysioJane)。如果需要严格区分大小写(只匹配小写doctor、大写Admin这类),可以用区分大小写的FIND函数搭配ISNUMBER:
=IF(OR(ISNUMBER(FIND("doctor",A2)=1),ISNUMBER(FIND("Fysio",A2)=1),ISNUMBER(FIND("Admin",A2)=1)),2.3,0)
FIND("doctor",A2)=1用来检查doctor是否出现在单元格的第1位(也就是开头)。ISNUMBER会把位置结果转换成布尔值(找到且在第1位就返回TRUE,否则FALSE)。
内容的提问来源于stack exchange,提问作者jtermaat
相关产品推荐
相关产品推荐

