【发布时间】:2017-06-18 01:27:45
【问题描述】:
我有一个这样的数据表:
Col A Col B Col C Column D Col E Column F Col G Col H Col I Col J Col K
1234 Supplier 1
2222 Supplier 2
3333 Supplier 2
4444 Supplier 1
我还有一张纸
Home sheet:
Column B
Supplier 1 <-- Values Produced From Index Match Formula
Supplier 2
我想列出 D 列数据表中的所有项目编号,其中主页表上的供应商名称匹配。
但是,我想将所有匹配的项目编号放在一个单元格中,在一个逗号分隔的列表中,如下所示:
Home sheet:
Column B Column C
Supplier 1 1234, 4444
Supplier 2 2222, 3333
目前我正在使用 vba 中的用户定义函数来执行此操作:
Function SingleCellExtract(LookupValue As String, LookupRange As Range, ColumnNumber As Integer, Char As String)
'Updateby20150824
Dim I As Long
Dim xRet As String
For I = 1 To LookupRange.Columns(1).Cells.Count
If LookupRange.Cells(I, 1) = LookupValue Then
If xRet = "" Then
xRet = LookupRange.Cells(I, ColumnNumber) & Char
Else
xRet = xRet & "" & LookupRange.Cells(I, ColumnNumber) & Char
End If
End If
Next
SingleCellExtract = Left(xRet, Len(xRet) - 1)
End Function
然后使用下面的公式得到结果:
=SingleCellExtract(B14,Data!F:F,-1,",")
这行得通,但是,我有 500 多行数据,这种方法需要大约 10 分钟或更长时间来计算 - 有时会导致工作表崩溃。
请有人告诉我一个更好的方法吗?
【问题讨论】: