excel Power Query将自定义列转换为T/F语句

hlswsv35  于 2023-06-07  发布在  其他
关注(0)|答案(2)|浏览(142)

我有一个Excel报告,它返回一列工人的省份随时间的变化,代码如下:SK36 > SK30 > AB01,其中只有前2个字母重要(省代码),字母后面的2个数字不重要。在同一单元中可以有多达10个代码,例如:ON## > ON## > BC## > BC## > BC##....
我正在寻找的是一个查询,如果至少有一个不同省份的示例,则返回“True”,如果它们都是相同的省份,则返回“False”:
AB01 > AB55 > AB75 = True
SK36 > SK30 > AB01 = False

tzxcd3kk

tzxcd3kk1#

此自定义列将完成以下工作:

if List.Count(
    List.Distinct(
        List.Transform(
            Text.Split([YourColumnName], " > "), 
            each Text.Start(_,2)
        )
    )
) > 1 then "True" else "False"
yrefmtwq

yrefmtwq2#

PowerQuery

List.MatchesAll(
    Text.Split([Input]," > "), (n)=> Text.Start(n,2) = Text.Start([Input],2)
)

或者更好:

List.Count(
    List.Distinct(Text.Split(Text.Remove([Input],{"0".."9"})," > "))
)>1

或者,如果将TRUEFALSE的值颠倒,只需更改为:

List.MatchesAny(
    Text.Split([Input]," > "), (n)=> Text.Start(n,2) <> Text.Start([Input],2)
)

或者更好:

List.Count(
    List.Distinct(Text.Split(Text.Remove([Input],{"0".."9"})," > "))
)=1

公式

=MAP([Input],LAMBDA(n,SUM(N(LEFT(TEXTSPLIT(n," > "),2)<>LEFT(n,2)))>0))

或者,再次颠倒逻辑:

=MAP([Input],LAMBDA(n,SUM(N(LEFT(TEXTSPLIT(n," > "),2)<>LEFT(n,2)))=0))

相关问题