Excel VBA计算来自多个范围的不同值

我想找出不同的值(文本)在3个不同的范围。 我想我find了一个在线的方式,但它给了我一个错误。

这里是代码;

Dim MyDict As Object, MyCols As Variant, OutCol As String, LastRowXY_2 As Long Dim XY_A As Variant, I_XY As Long, MyData_XY As Variant Set MyDict = CreateObject("Scripting.Dictionary") MyCols = Array("P", "S", "V") OutCol = "AN" For Each XY_A In MyCols LastRowXY_2 = Worksheets(Ders_Sheet_Adi).Cells(Rows.Count, XY_A).End(xlUp).Row MyData_XY = Worksheets(Ders_Sheet_Adi).Range(XY_A & "22:" & XY_A & LastRowXY_2).Value For I_XY = 1 To UBound(MyData_XY) If MyData_XY(I_XY, 1) <> "" Then MyDict(MyData_XY(I_XY, 1)) = 1 Next I_XY Next XY_A Worksheets(Ders_Sheet_Adi).Range(OutCol & "1").Resize(MyDict.Count, 1).Value = WorksheetFunction.Transpose(MyDict.keys) 

在“XY_A”的第二次运行中,MyData_XY给出“types不匹配”错误。

我可以使用任何一种想法。

选项1:

更改:

Worksheets(Ders_Sheet_Adi).Range(OutCol & "1").Resize(MyDict.Count, 1).Value = WorksheetFunction.Transpose(MyDict.keys)

Range(OutCol & "1").Resize(1, 1).Value = WorksheetFunction.Transpose(2)

并检查它是否现在工作。 如果是这样,你在MyDict没有任何值,因此会抛出一个错误。

选项2:您认为MyData_XY是什么? 一个范围,一个数组? 尝试像这样调用 – > MyData_XY(1)(1,1)而不是这个 – > MyData_XY(1,1)