Excel 查找单元格中以逗号分隔的多个值,并返回以逗号分隔的多个值
如果有人可以帮忙的话 让我们把这张纸叫做1 我想在这里执行查找,在这里我可以将表2中B列的值引入表1中的B列。返回的多个值也应该用逗号分隔。我尝试过在这里使用textjoin公式,但它出错的地方是,例如,它将A12计算为A1,从而为一个值返回2个值Excel 查找单元格中以逗号分隔的多个值,并返回以逗号分隔的多个值,excel,vba,excel-formula,lookup,Excel,Vba,Excel Formula,Lookup,如果有人可以帮忙的话 让我们把这张纸叫做1 我想在这里执行查找,在这里我可以将表2中B列的值引入表1中的B列。返回的多个值也应该用逗号分隔。我尝试过在这里使用textjoin公式,但它出错的地方是,例如,它将A12计算为A1,从而为一个值返回2个值 我可以尝试使用VBA代码,但没有多少积极的结果。您可以使用FILTERXML()将每个逗号的代码拆分为一个值数组,我们可以通过VLOOKUP()进行处理。然后使用TEXTJOIN(),将返回的数组连接回逗号分隔的字符串: E2中的公式: =TE
我可以尝试使用VBA代码,但没有多少积极的结果。您可以使用
FILTERXML()
将每个逗号的代码拆分为一个值数组,我们可以通过VLOOKUP()
进行处理。然后使用TEXTJOIN()
,将返回的数组连接回逗号分隔的字符串:
E2
中的公式:
=TEXTJOIN(",",,VLOOKUP(FILTERXML("<t><s>"&SUBSTITUTE(D2,",","</s><s>")&"</s></t>","//s"),A$2:B$6,2,0))
=TEXTJOIN(“,”,VLOOKUP(FILTERXML(“&SUBSTITUTE(D2,“,”,”)&“/s”),A$2:B$6,2,0))
其中:
—创建有效的XML字符串,用开始/结束标记替换逗号“”&SUBSTITUTE(D2,,,“”)和“”
-返回所有s节点的有效XPATH“//s”
注意:如果您使用的是Excel 2019,则应通过CSE输入。如果您有兴趣更深入地解释为什么这样做,我想让您参考以前的文章。对于VBA解决方案,如果您的翻译没有经常更改,您可以填充一个字典(通过工具添加一个引用->引用…到Microsoft脚本运行时)保存翻译 然后,您可以传入单元格的值,将其拆分,并返回每个部分的对应转换:
Dim dict As Dictionary
函数转换(作为字符串)作为字符串
如果dict什么都不是,那么
Set dict=新字典
Dim arr()作为变量
arr=工作表(“表1”).范围(“A1:B25”).值
将行计数设置为整数
行计数=UBound(arr,1)
将行设置为整数
对于row=1到rowCount
dict(arr(第1行))=arr(第2行)
下一个
如果结束
Dim temp()作为字符串'保存当前输入的键和结果
温度=拆分(“,”)
作为整数的Dim ubnd
ubnd=UBound(温度)
作为整数的Dim i
对于i=0到ubnd
将键变暗为字符串
键=温度(i)
如果dict.存在(键),则
温度(i)=指令(键)
其他的
温度(i)=“
如果结束
下一个
翻译=连接(临时“,”)
端函数
你可以从这样的手机中调用它:
=Translations(A1)
请注意,为了提高效率,字典不会在每次函数调用时重新创建,而是存储在内存中。因此,如果您的翻译发生更改,则需要重置词典。这可以通过多种方式实现:
- 关闭并重新打开工作簿
- 在VBA编辑器中,从菜单中单击运行->重置
- 编写一个清除字典的特殊方法:
并在进行更改后调用它(例如,从即时窗格)Sub-ClearDict Set dict=无 端接头