Excel VBA – Objtdict.Keys范围更改时生成一个错误

我正在尝试从列中生成唯一列表。 当范围是B1:B时,我的代码工作正常,但是当它变成B17:B时,它生成NA,并在列B内输出不相关的行中的值。

这是守则,

Sub A_Unique_B() Dim X Dim objDict As Object Dim lngRow As Long Set objDict = CreateObject("Scripting.Dictionary") X = Application.Transpose(Range([a1], Cells(Rows.Count, "A").End(xlUp))) For lngRow = 1 To UBound(X, 1) objDict(X(lngRow)) = 1 Next Range("B1:B" & objDict.Count) = Application.Transpose(objDict.keys) End Sub 

请纠正我在哪里错了。 我想要输出从列B17开始。

您已调整目标以容纳密钥。 因为"B1:B" & objDict.Count正确resize,所以当B1是B1时,您正在远离它。 你可以添加16像"B17:B" & objDict.Count + 16或只是使用resize。

 Range("B1").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys) Range("B17").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys) 

你不能转置Dictionary键,因为它们只有一维,而Transposing假设有二维变体。 您需要将这些键分配给一个变体,使其变为二维,然后自行转换它们。 或者只是一个一个地分配给单元格