Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在数组中存储唯一值,然后在另一张表中打印它们_Arrays_Vba_Excel - Fatal编程技术网

Arrays 在数组中存储唯一值,然后在另一张表中打印它们

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

我正在从事一个项目,该项目涉及在电子表格中查找特定列,然后将该列中唯一的值存储到数组中,然后将该数组打印到另一张图纸上。由于类型不匹配和未设置with块,我的代码出现了错误,但我似乎无法找出原因。任何帮助都将不胜感激

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
'ed
colName尽可能长,这样就可以了)