为什么这个 DAX 公式不起作用?

Why won't this DAX formula work?

我目前正在使用 DAX 公式尝试从字符串中删除数字。该字符串是邮政编码的前半部分。因此,我输入了以下公式

=if(Istext(mid([Postcode District],1,1)),(left([postcode district],2)),(left([postcode district],1)))

这应该做的是查看第二个字符是否为文本,return如果是则为 2 个字母,否则为一个。

例如,输入 CA1 应该 return CAB22 应该 return B

这根本不是这样做的,我不确定为什么。 return编辑的只是前两个字母,无论第二个字母是文本还是数字。

MID 函数将一个字符串作为参数,并且始终 return 一个字符串(即使它看起来像一个数字),因此您的 IsText 始终为 TRUE。

试试这个

=if(IsNumber(mid([Postcode District],1,1)*1),(left([postcode district],1)),(left([postcode district],2)))

最终使用了 =SUBSTITUTE(substitute(SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( SUBSTITUTE([Postcode District],"1"," "),"2"," "), "3"," "),"4"," "),"5"," "), "6"," "),"7"," "),"8"," "),"9"," "),0,"") (作为它的 DAX,它会接受这一点——对于标准 XL,它的嵌套函数太多了)

因为这是一个非常丑陋的公式,我也会尝试其他人的答案,看看是否有更优雅的解决方案:)