[英]How can I reproduce index/match lookup with wildcards in Excel data model?
TL;DR:标题说明了一切:有没有办法使用通配符在数据模型中重现 excel INDEX-MATCH 查找
我正在尝试重新组织一个 Excel 文件,该文件使用 PowerQuery 从外部来源导入和转换数据并将其加载到数据模型中。 然后使用此数据生成多个数据透视表并提取特定数据。 我需要在数据模型中添加一个计算列,使用纯 Excel 公式计算相对容易,但我找不到任何方法在数据模型中创建它。 问题是数据模型非常适合替换 vlookups,但它不支持通配符,这在这个使用场景中是必不可少的。 下面当然是一个玩具例子来说明这个问题:
我有一个事实表tblFact ,如下所示:
这个想法是添加根据列Country、Model 和 SalesMan显示消息的列,具有以下逻辑:
在原始文件中,这是通过添加嵌套 IF 来完成的,如下所示:
=IF([@Model]="A1";"Sold an A1";IF([@SalesMan]="Mario";"ITSAME";IF([@Country]="US";"OH YEAH";"Default message")))
但是,由于在实际案例中还有更多案例,条件更复杂,并且需要经常更新,因此很难维护。 我想添加一个查找表并利用 INDEX 和 MATCH 允许使用通配符的事实。
以下公式将复制嵌套 IF 的行为: =INDEX(tblLookUp[Message];MATCH(1;MATCH(tblLookUp[LUKey];[@LUValue];0);0))
查找更容易维护并添加具体案例。
现在,如果不是因为我被迫使用数据模型这一事实,这将起作用:
我尝试了 LOOKUPVALUE 函数,但它不支持通配符,我也尝试了 FILTER 和 SEARCH 的各种组合,但我什至无法获得不返回错误的公式。
其他相关说明:
试试这个计算列:
=
PATHITEM(
CONCATENATEX(
FILTER( tblLookUp, SEARCH( tblLookUp[LUKey], MainTable[LUValue],, 0 ) ),
tblLookUp[Message],
"|"
),
1
)
SEARCH
支持通配符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.