如何在目标matrix中使用通配符匹配文本

我想将交易types分配给信用卡交易列表。 types取决于每个事务的描述,这是一个文本值。 我使用INDEX MATCH来查找从事务描述到types映射的描述索引表中的types。

这是问题:我想避免描述索引表中非常类似的条目列表。 我已经有超过十个条目包含子string“亚马逊”。 因此,我考虑在MATCH使用通配符,以便包含子string“amazon”(或类似)的所有事务映射到相同的types。 不幸的是, MATCH仅在search值中支持通配符,而不是在目标matrix中。 因此,维护使用通配符匹配模式的描述索引表似乎是不可能的。

可以这样做吗?

考虑下面的示例表。 我想匹配DescriptionPattern来findType

交易表

 | Description | Amount | |-------------------|--------| |Amazon Merchant XY | 100.00 | |Amazon online //> | 89.99 | |Amazon.com | 32.64 | 

查找表

 | Pattern | Type | |-----------|--------------| |*amazon* |Shoping | |*itunes* |Entertainment | 

以下是您的解决scheme:

 =INDEX($F$2:$F$3,MAX(ROW($A$1:$A$2)*IF(ISERROR(FIND($E$2:$E$3,A2)),0,1))) 

这需要inputCtrl + Shift + Enter而不是Enter

它适用于以下设置: 在这里输入图像说明


说明

 IF(ISERROR(FIND($E$2:$E$3,A2)),0,1) 

循环遍历查找表,并创build一个1和0的数组,取决于在A2的情况下是否在stringA2中find查找值,数组将是{1,0}

将这个string乘以ROW($A$1:$A$2)有效地为您提供INDEX函数可以使用的行位置: {1,0}*{1,2} = {1,0}不是A4的情况下,我们会有这样的事情: {0,1}*{1,2} = {0,2}

所以采取这个MAX给你的数字12取决于哪一个string被发现,你可以使用它作为正常的INDEX函数。 请注意,使用MAX函数意味着如果您有多个匹配项,它将在列表中取最低的匹配项。