我正在尝试从列生成唯一列表。当范围为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列开始。
答案 0 :(得分:1)
您不能转置字典键,因为它们只是1维,而转置假设有2维Variant。您需要将这些键分配给变体,使其成为2维,并自行转置它们。或者只是逐个分配到单元格中
答案 1 :(得分:1)
您已调整目标位置以容纳键。当B1为B1时,你正在逃避它,因为"B1:B" & objDict.Count
正确调整大小。你可以像"B17:B" & objDict.Count + 16
那样添加16,或者只使用resize。
Range("B1").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys)
Range("B17").Resize(objDict.Count, 1) = Application.Transpose(objDict.keys)