You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:50:26