vba:从列中列出唯一值?

我有一个叫做数据的工作表,如下所示:

在这里输入图像说明

我也有另一张纸(表1):

在这里输入图像说明

下面的代码应该查看工作表数据上的C列,并列出工作表1中C列中的唯一供应商。

码:

Sub LIST() Dim arr As New Collection, a Dim aFirstArray() As Variant Dim I As Long, cell As Range Dim Lastrow As Integer Lastrow = ThisWorkbook.Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row 'Define your variables aFirstArray() = ThisWorkbook.Worksheets("Data").Range("C2:C" & Lastrow).value 'Start listing loop On Error Resume Next For Each a In aFirstArray arr.Add a, a Next For I = 1 To arr.Count 'First List Supplier Cells(I + 17, 3) = arr(I) 'Next List Items Cells(I + 17, 6) = "=SingleCellExtract(C" & I + 17 & ",Data!$A:$R,3,4,"", "")" 'List Example Link Cells(I + 17, 10).Parent.Hyperlinks.Add Anchor:=Cells(I + 17, 10), Address:="", SubAddress:= _ "", TextToDisplay:="this is long text" 'Add COntact name Cells(I + 17, 15) = "=INDEX(Contacts!$B:$B,MATCH(C" & I + 17 & ",Contacts!$A:$A),0)" 'Add COntact email Cells(I + 17, 18) = "=INDEX(Contacts!$C:$C,MATCH(C" & I + 17 & ",Contacts!$A:$A),0)" 'Add REMOVE FUNC Cells(I + 17, 22) = "Remove" Next End Sub 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 

当删除错误恢复接下来我得到一个types不匹配错误在这一行:

  arr.Add a, a 

如果这个问题的话,我的范围内有一些空单元格。

什么都没有发生,没有任何东西正在被列出 请有人告诉我我要去哪里错了吗?