Arrays 在数组中存储唯一值,然后在另一张表中打印它们
我正在从事一个项目,该项目涉及在电子表格中查找特定列,然后将该列中唯一的值存储到数组中,然后将该数组打印到另一张图纸上。由于类型不匹配和未设置with块,我的代码出现了错误,但我似乎无法找出原因。任何帮助都将不胜感激Arrays 在数组中存储唯一值,然后在另一张表中打印它们,arrays,vba,excel,Arrays,Vba,Excel,我正在从事一个项目,该项目涉及在电子表格中查找特定列,然后将该列中唯一的值存储到数组中,然后将该数组打印到另一张图纸上。由于类型不匹配和未设置with块,我的代码出现了错误,但我似乎无法找出原因。任何帮助都将不胜感激 Option Explicit Sub Find_Distincts_Policies() Dim aCell As Range, rng As Range Dim varIn As Variant, varUnique As Variant, element As Varian
Option Explicit
Sub Find_Distincts_Policies()
Dim aCell As Range, rng As Range
Dim varIn As Variant, varUnique As Variant, element As Variant
Dim isUnique As Boolean
Dim ws As Worksheet
Dim wkb As Workbook
Dim colName As Long
Dim i As Long, j As Long, k As Long
Dim iInCol As Long, iInRow As Long, iUnique As Long, nUnique As Long, LastRow As Long
Set wkb = ThisWorkbook
Set ws = wkb.Worksheets("Sheet2")
With ws
Set aCell = .Range("A1:ZZ4").Find(what:="Unique Number", LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)
If Not aCell Is Nothing Then
colName = Split(.Cells(, aCell).Address, "$")(1)
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range(colName & "2:" & colName & LastRow)
varIn = rng.Value
ReDim varUnique(1 To UBound(varIn, 1) * UBound(varIn, 2))
nUnique = 0
For iInRow = LBound(varIn, 1) To UBound(varIn, 1)
For iInCol = LBound(varIn, 2) To UBound(varIn, 2)
isUnique = True
For iUnique = 1 To nUnique
If varIn(iInRow, iInCol) = varUnique(iUnique) Then
isUnique = False
Exit For
End If
Next iUnique
If isUnique = True Then
nUnique = nUnique + 1
varUnique(nUnique) = varIn(iInRow, iInCol)
End If
Next iInCol
Next iInRow
ReDim Preserve varUnique(1 To nUnique)
MsgBox varUnique
Else: Exit Sub
End If
End With
With wkb
.Worksheets.Add.Name = "Unique values"
ActiveSheet.Range("A1") = varIn
End With
End Sub
尝试使用字典(它可以在微软脚本运行时引用)找到唯一的值,你会发现它更容易使用。你也可以考虑VBA的代码> ReaveDeaveRoad < /Cord>方法:抛开其他更好的方法来实现你的目标,
类型不匹配的原因是colName=Split(.Cells(,aCell).Address,“$”)(1)
。。。这里有很多错误,但你真的想要列号。您需要的是colName=aCell.Column
和Set rng=.Range(.Cells(2,colName),.Cells(LastRow,colName))
(您已经Dim
'edcolName尽可能长,这样就可以了)