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

时间:2016-09-14 10:39:37

标签: excel excel-formula

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

问题在于:我想避免在描述索引表中列出一长串非常相似的条目。我已经有十多个包含子串“amazon”的条目。因此,我考虑在MATCH中使用通配符,以便包含子串“amazon”(或类似)的所有事务都映射到相同的类型。不幸的是,MATCH仅在搜索值中支持通配符,而不在目标矩阵中。因此,似乎无法维护使用通配符匹配模式的描述索引表。

可以这样做吗?

考虑以下示例表。我希望DescriptionPattern匹配,以找到Type

交易表

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

查找表

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

1 个答案:

答案 0 :(得分:2)

以下是您的解决方案:

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

需要输入 Ctrl + Shift + 输入而不是 Enter

它适用于以下设置: enter image description here

说明

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

循环查找表并创建一个1和0的数组,具体取决于在 A2 的字符串中是否找到了查找值 A2 数组将是{1,0}

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

因此,取MAX这个数字会为您提供 1 2 的数字,具体取决于找到的字符串,您可以正常使用{ {1}}功能。请注意,使用INDEX函数意味着如果您有多个匹配项,则它将采用列表中的最低匹配项。