2016-05-16 52 views
0

当前设置:我有两个Excel表单 - 一个包含产品信息,另一个包含子类别列表(子类别列表中的每一列都有一个与此关联的关键字子类)。Excel - 基于匹配子字符串的关键字列表返回值

预期结果:我想根据子类别表中的关键字为每个产品返回一个子类别。我目前正在试图找到一种方法,在产品名称中找到包含子类别表单中关键字之一的子字符串,然后返回相关的子类别名称。

Result Example

+0

输入'找到包含在subcategory'的关键字之一是没有的“厨房”,在“托马斯在产品名称中的子面包锅“。您要求计算机认为哪一个目前是不可能的:/ – findwindow

+0

对不起,不明确,子类别表的第一列包含子类别的名称。后面的列包含与相关子类别相匹配的关键字,因此在上面的例子中,'mixer','cooker'和'pan'与“kitchen” – JDStopper

+0

在同一行的单独列中,您将需要制作第二张表每行一个字,所以厨房将有三条线。每个搅拌机,电磁炉和锅一个。然后你就可以用INDEX/MATCH公式来做到这一点。否则,它将采取VBA。 –

回答

2

就像我在我的评论说,你将需要扩大查找阵列具有每字一行:

enter image description here

然后你就可以使用这个公式:

=INDEX($F$1:$F$6,MATCH(TRUE,INDEX((ISNUMBER(SEARCH($G$1:$G$6,A1))),),0)) 

enter image description here


编辑

按照那个刚刚添加的照片:

=INDEX($F$1:$F$3,AGGREGATE(15,6,ROW($G$1:$I$3)/(ISNUMBER(SEARCH($G$1:$I$3,A1))),1)) 

enter image description here

+0

为什么不''sumproduct'? – findwindow

+0

太好了,我认为你的第一个解决方案使组织起来更有意义。谢谢你的帮助! – JDStopper

+1

@findwindow Sumproduct在这种情况下不起作用。我们需要返回一个不是数字的文本字段。如果OP可以保证标准不会重复,它将代替Aggregate(),因为那么Sumproduct会带来发现该值的两行的总和。使用聚合比较安全,因为它将返回仅找到的最低行或第一个值。 –

2

细胞F1试试这个。公式需要通过按Ctrl + Shift + Enter

=IF(COUNT(SEARCH(C1:E1,A1)),B1,"") 

enter image description here

相关问题