在逗号分隔列表中列出所有匹配的值?
我有2个工作表:
工作表1:
Column C Column D Supplier A Fish Supplier A Meat Supplier B Bread
工作表2:
Column C Column F Supplier A Supplier B
在FI列中,要创build与供应商匹配的所有项目的列表。
举个例子:
Column C Column F Supplier A Fish, Meat Supplier B Bread
我正在使用以下vba函数:
Function SingleCellExtract(LookupValue As String, LookupRange As Range, LookupCol As Long, ReturnCol As Long, Char As String) 'Updateby20150824 Dim varTMP As Variant, I As Long varTMP = LookupRange Dim xRet As String For I = 1 To UBound(varTMP, 1) If varTMP(I, LookupCol) = LookupValue Then If xRet = "" Then xRet = varTMP(I, ReturnCol) Else xRet = xRet & Char & varTMP(I, ReturnCol) End If End If Next SingleCellExtract = xRet End Function
而这个公式在F列
=SingleCellExtract(C1,Data!D:D,-1,",")
实际的代码工作正常,但我想根除需要'拖'公式列F来产生结果。 有没有一种方法可以改善代码绕过公式的需要,只是有这样的事情:
Range F1 = 'Comma Separated List' Next Cell in column F etc...
你可以使用macros和利用Dictionary
对象
Sub Main() Dim cell As Range With CreateObject("Scripting.Dictionary") For Each cell In Worksheets("Sheet1").Range("C1", Worksheets("Sheet1").Cells(Rows.count, "C").End(xlUp)) .item(cell.Value) = .item(cell.Value) & cell.Offset(, 1).Value & "," Next For Each cell In Worksheets("Sheet2").Range("C1", Worksheets("Sheet2").Cells(Rows.count, "C").End(xlUp)) MsgBox .item(cell.Value) cell.Offset(, 3).Value = Left(.item(cell.Value), Len(.item(cell.Value)) - 1) Next End With End Sub