以下代码公开了 VBA 的 Split 函数以供工作表使用 - 它返回已使用指定分隔符拆分的项目的行数组。例如,如果单元格 A1 包含文本“Item 1,Item 2”),则 EXPLODE(A1,",") 将返回一个包含元素“Item 1”和“Item 2”的数组。
Function EXPLODE(str As String, Optional delimiter As Variant) As Variant
If IsMissing(delimiter) Then
delimiter = " "
End If
EXPLODE = Split(str, delimiter)
End Function
它是一个数组函数。要在电子表格中使用返回的元素:
- 选择要显示“爆炸”项目的单元格
- 输入指定具有源字符串的单元格(或引用包含源的单元格)和将在其上完成拆分的分隔符的函数
- 使用Control- Shift-Enter组合键完成输入。
或者,可以使用 INDEX 函数选择单个元素——=INDEX(EXPLODE(A1,1,2)
使用前面的示例将返回“Item 2”。(给定一个范围或数组,INDEX 函数返回第 i 行第 j 列中的值。)这种用法不需要将公式作为数组公式输入。
对于您的用例,可以与其他功能组合使用。您有一个包含多个“aa, bb, cc”形式的项目(VLOOKUP 的结果)的字符串,并且想要确定是否可以在 A 列的任何单元格中找到该字符串的任何元素作为单个项目. 你想要一个函数,如果找到所有元素,则返回 True,否则返回 False。以下公式实现了该结果:
=SUM(SIGN(IFERROR(MATCH(TRIM(EXPLODE(D1,",")),$A:$A,0),0)))=COUNTA(EXPLODE(D1,","))
它是一个数组公式,需要用Control- Shift-输入Enter。请注意,我使用单元格 D1 的内容代替了您的查找值。TRIM 函数用多个项目去除字符串元素之间的任何无关空格。