我想将交易类型分配给信用卡交易列表。类型取决于每个事务的描述,这是一个文本值。我使用INDEX
MATCH
来查找描述索引表中的类型,该表从事务描述映射到类型。
问题在于:我想避免在描述索引表中列出一长串非常相似的条目。我已经有十多个包含子串“amazon”的条目。因此,我考虑在MATCH
中使用通配符,以便包含子串“amazon”(或类似)的所有事务都映射到相同的类型。不幸的是,MATCH
仅在搜索值中支持通配符,而不在目标矩阵中。因此,似乎无法维护使用通配符匹配模式的描述索引表。
可以这样做吗?
考虑以下示例表。我希望Description
与Pattern
匹配,以找到Type
。
交易表
| Description | Amount |
|-------------------|--------|
|Amazon Merchant XY | 100.00 |
|Amazon online //> | 89.99 |
|Amazon.com | 32.64 |
查找表
| Pattern | Type |
|-----------|--------------|
|*amazon* |Shoping |
|*itunes* |Entertainment |
答案 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 。
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
函数意味着如果您有多个匹配项,则它将采用列表中的最低匹配项。