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_Excel Formula - Fatal编程技术网

Excel 在带有分隔单元格的外部工作表上使用索引/匹配

Excel 在带有分隔单元格的外部工作表上使用索引/匹配,excel,excel-formula,Excel,Excel Formula,我有一个电子表格,Alpha,它引用了一个外部电子表格Bravo 我需要Alpha的B2单元格在Bravo中检查列A中包含AlphaA2中字符串的所有单元格。如果找到匹配项,则将该行的B列中的值复制到AlphaB2。目前,我使用以下公式得出了这一结论: =INDEX([Bravo.xlsb]Sheet1!A$2:B$22,MATCH(A2,[Bravo.xlsb]Sheet1!$A$2:$A$22,0),2) …但是,我在Bravo中有一些单元格,它们有多个字符串,由分隔符分隔,需要检查。使问

我有一个电子表格,Alpha,它引用了一个外部电子表格Bravo

我需要Alpha的
B2
单元格在Bravo中检查列
A
中包含Alpha
A2
中字符串的所有单元格。如果找到匹配项,则将该行的
B
列中的值复制到Alpha
B2
。目前,我使用以下公式得出了这一结论:

=INDEX([Bravo.xlsb]Sheet1!A$2:B$22,MATCH(A2,[Bravo.xlsb]Sheet1!$A$2:$A$22,0),2)
…但是,我在Bravo中有一些单元格,它们有多个字符串,由分隔符分隔,需要检查。使问题复杂化的是,Alpha的
A
列中的一些引用单元格有多个由分隔符分隔的字符串。理想情况下,下图显示了我需要如何使用此公式:

Alpha.csv:

Bravo.csv:

所以我的问题是,如何修改公式以处理包含分隔字符串的单元格

更新

为了澄清这一点,在运行任何公式之前,Alpha的外观如下:

Alpha.csv (pre-formula)                             

Items                                   Category Group (results)
Oranges|Chicken                         
Ice Cream|Pears|Steaks
…这就是布拉沃的样子

Bravo.csv

Item Categories                         Category Group
Fruits>Pears|Fruit>Oranges              Fruits & Health
Meat>Steaks|Meat>Chicken|Meat>Lamb      Meats
Deserts>Ice cream                       Deserts & Sweets
我需要Alpha的B2来获取A2中的每个字符串(有时用分隔符分隔多个字符串),通过Bravo检查每个字符串的匹配列。如果找到匹配项,则将相应的类别组名称从Bravo的B列添加到Alpha B2单元格

它对A2中的每个字符串重复此操作,如果有多个字符串,则添加一个|分隔符,直到检查完所有字符串。结果如下所示:

Alpha.csv (post-formula)                                

Items                                   Category Group (results)
Oranges|Chicken                         Fruits & Health|Meats
Ice Cream|Pears|Steaks                  Deserts & Sweets|Fruits & Health|Meats

一种选择是简单地使用文本到列功能来在Alpha文档中分隔列表。这将允许您使用以下公式:

=INDEX([Bravo.xlsx]Sheet1!$B:$B,MATCH("*"&A2&"*",[Bravo.xlsx]Sheet1!$A:$A,0))
此公式查找Alpha
A2
中的值,在Bravo的
A列中,该值前面有任何值,后面有任何值


否则,您必须更具体地确定要搜索的类别,在这种情况下,您可以利用
right()
mid()
left()
来调整
match()
函数。

我更新了我的问题,希望能澄清Melk。感谢您的回复。是否需要将Alpha列
a
中的项目放在一起?你能在不使用分隔符的情况下将它们分隔成单独的行,并使每一行都属于一个类别吗?该工作表有4000行,其中一些项目属于10个或更多类别,我担心这会成为一个噩梦。我认为,在这种情况下,你最好的选择来自某个VBA。然而,不幸的是,我对VBA不够精通,无法在这里提供帮助。祝你好运!