Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-基于匹配子字符串的关键字列表返回值_Excel - Fatal编程技术网

Excel-基于匹配子字符串的关键字列表返回值

Excel-基于匹配子字符串的关键字列表返回值,excel,Excel,当前设置:我有两张excel表格-一张是产品信息,另一张是子类别列表(子类别列表的每一列都有一个与该子类别关联的关键字) 期望的结果:我想根据子类别表中的关键字返回每个产品的子类别。我目前正试图找到一种方法,在产品名称中找到一个子字符串,该子字符串包含子类别表中的一个关键字,然后返回相关的子类别名称 正如我在评论中所说,您需要扩展查找数组,使每个单词有一行: 然后您可以使用以下公式: =INDEX($F$1:$F$6,MATCH(TRUE,INDEX((ISNUMBER(SEARCH($G$1

当前设置:我有两张excel表格-一张是产品信息,另一张是子类别列表(子类别列表的每一列都有一个与该子类别关联的关键字)

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


正如我在评论中所说,您需要扩展查找数组,使每个单词有一行:

然后您可以使用以下公式:

=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将带来找到该值的两行的总和。使用聚合更安全,因为它将返回最低的行或仅找到的第一个值。@如果这是正确的答案,请单击答案旁边的复选标记将其标记为正确。