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

DAX中IF函数模糊匹配失效问题求助

问题分析与解决方案

嘿,我立刻就发现你遇到的问题根源了——DAX里的普通相等运算符=是精确匹配,它完全不认识你用的*通配符!你想实现的“包含指定文本就匹配”,得用专门的文本搜索函数才行。

先拆解你原公式里的几个小问题:

  • 通配符*不能直接跟=一起用,DAX不支持这种用法
  • 最后面的(na)应该是DAX的内置函数NA(),少了括号和大写
  • 虽然and()写法没问题,但DAX里更常用的是用&&逻辑运算符替代,可读性更强

修正后的DAX公式(两种可选写法)

写法1:用SEARCH函数(支持不区分大小写搜索)

SEARCH函数会查找指定文本在目标字符串中的位置,如果找不到就返回0,我们可以利用这一点判断是否包含:

IF(
    SEARCH("titan tidge", [product_code_name],, 0) > 0 && SEARCH("BURN-in", [task_name],, 0) = 0,
    "CMT 263",
    NA()
)
  • 第三个参数留空表示从第一个字符开始搜索
  • 第四个参数0表示找不到时返回0(默认是错误值,所以我们指定返回0避免报错)
  • SEARCH默认不区分大小写,刚好匹配你示例里的大写TITAN TIDGE

写法2:用CONTAINSSTRING函数(更直观的布尔判断)

如果觉得SEARCH的返回值判断有点绕,可以用CONTAINSSTRING,它直接返回布尔值(包含就返回TRUE,不包含返回FALSE):

IF(
    CONTAINSSTRING([product_code_name], "titan tidge") && NOT(CONTAINSSTRING([task_name], "BURN-in")),
    "CMT 263",
    NA()
)

这个写法更贴近你原本的逻辑思路,可读性更高,推荐优先使用。

为什么原公式始终返回FALSE?

因为你用[product_code_name] = "*titan tidge*"时,DAX会把*titan tidge*当成精确的字符串内容去匹配,而你的单元格数据是TITAN TIDGE HOST DP,完全不等于带星号的这个字符串,所以这个条件永远是FALSE,自然整个IF就返回NA()了。

内容的提问来源于stack exchange,提问作者Avi22

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:55:37