Excel-基于匹配子字符串的关键字列表返回值
当前设置:我有两张excel表格-一张是产品信息,另一张是子类别列表(子类别列表的每一列都有一个与该子类别关联的关键字) 期望的结果:我想根据子类别表中的关键字返回每个产品的子类别。我目前正试图找到一种方法,在产品名称中找到一个子字符串,该子字符串包含子类别表中的一个关键字,然后返回相关的子类别名称Excel-基于匹配子字符串的关键字列表返回值,excel,Excel,当前设置:我有两张excel表格-一张是产品信息,另一张是子类别列表(子类别列表的每一列都有一个与该子类别关联的关键字) 期望的结果:我想根据子类别表中的关键字返回每个产品的子类别。我目前正试图找到一种方法,在产品名称中找到一个子字符串,该子字符串包含子类别表中的一个关键字,然后返回相关的子类别名称 正如我在评论中所说,您需要扩展查找数组,使每个单词有一行: 然后您可以使用以下公式: =INDEX($F$1:$F$6,MATCH(TRUE,INDEX((ISNUMBER(SEARCH($G$1
正如我在评论中所说,您需要扩展查找数组,使每个单词有一行: 然后您可以使用以下公式:
=INDEX($F$1:$F$6,MATCH(TRUE,INDEX((ISNUMBER(SEARCH($G$1:$G$6,A1))),),0))
编辑 根据刚刚添加的照片:
=INDEX($F$1:$F$3,AGGREGATE(15,6,ROW($G$1:$I$3)/(ISNUMBER(SEARCH($G$1:$I$3,A1))),1))
正如我在评论中所说,您需要扩展查找数组,使每个单词有一行: 然后您可以使用以下公式:
=INDEX($F$1:$F$6,MATCH(TRUE,INDEX((ISNUMBER(SEARCH($G$1:$G$6,A1))),),0))
编辑 根据刚刚添加的照片:
=INDEX($F$1:$F$3,AGGREGATE(15,6,ROW($G$1:$I$3)/(ISNUMBER(SEARCH($G$1:$I$3,A1))),1))
在单元格
F1
中尝试此操作。需要按ctrl+shift+enter键输入公式
=IF(COUNT(SEARCH(C1:E1,A1)),B1,"")
在单元格
F1
中尝试此操作。需要按ctrl+shift+enter键输入公式
=IF(COUNT(SEARCH(C1:E1,A1)),B1,"")
在产品名称中查找包含子类别中某个关键字的子字符串
在“thomas bread cooker”中没有“kitchen”。您要求计算机思考目前哪一项是不可能的:/抱歉,没有澄清,子类别表的第一列包含子类别的名称。后续列包含与相关子类别匹配的关键字,因此在上面的实例中,“混合器”、“炊具”和“锅”与“厨房”在同一行的单独列中,您需要在第二个表中每行使用一个单词,因此“厨房”将有三行。搅拌机、炊具和平底锅各一个。然后,您就可以使用和索引/匹配公式来执行此操作。否则需要VBA。在产品名称中找到一个子字符串,该子字符串包含子类别中的一个关键字
在“thomas bread cooker”中没有“kitchen”。您要求计算机思考目前哪一项是不可能的:/抱歉,没有澄清,子类别表的第一列包含子类别的名称。后续列包含与相关子类别匹配的关键字,因此在上面的实例中,“混合器”、“炊具”和“锅”与“厨房”在同一行的单独列中,您需要在第二个表中每行使用一个单词,因此“厨房”将有三行。搅拌机、炊具和平底锅各一个。然后,您就可以使用和索引/匹配公式来执行此操作。否则它将需要VBA。为什么不sumproduct
?太好了,我认为您的第一个解决方案更有意义,可以使事情井然有序。谢谢你的帮助@findwindow Sumproduct在此实例中不起作用。我们需要返回一个文本字段,而不是一个数字。如果OP可以保证条件不会重复,那么它将代替Aggregate(),因为Sumproduct将带来找到该值的两行的总和。使用聚合更安全,因为它只返回最低的行或找到的第一个值。@如果这是正确的答案,请单击答案旁边的复选标记将其标记为正确。为什么不sumproduct
?太好了,我认为您的第一个解决方案更有意义。谢谢你的帮助@findwindow Sumproduct在此实例中不起作用。我们需要返回一个文本字段,而不是一个数字。如果OP可以保证条件不会重复,那么它将代替Aggregate(),因为Sumproduct将带来找到该值的两行的总和。使用聚合更安全,因为它将返回最低的行或仅找到的第一个值。@如果这是正确的答案,请单击答案旁边的复选标记将其标记为正确。