使用VBA获取在VBA中使用的唯一值?

use*_*261 4 arrays excel vba unique excel-vba

我目前会使用Range,Cells等许多不同方式使用相同的基本原理.

Range("A1", Range("A1").End(xlDown)).AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("IV1"), Unique:=True

Dim myArr as Variant 
myArr = Range("IV1", Range("IV1").End(xlDown))
Columns("IV").Delete
Run Code Online (Sandbox Code Playgroud)

有没有办法直接将这些唯一值加载到VBA中的任何类型的对象而无需复制到另一个位置?

Sid*_*out 6

您可以使用a Collection Object来创建唯一条目.例如

Sub Sample()
    Dim Col As New Collection
    Dim itm
    Dim i As Long
    Dim CellVal As Variant

    '~~> Lets say looping through Row 1 to 22 For 
    '~~> Range("A1:A22") as mentioned in your recent comment
    For i = 1 To 22
        CellVal = Sheets("Sheet1").Range("A" & i).Value
        On Error Resume Next
        Col.Add CellVal, Chr(34) & CellVal & Chr(34)
        On Error GoTo 0
    Next i

    For Each itm In Col
        Debug.Print itm
    Next
End Sub
Run Code Online (Sandbox Code Playgroud)

ScreenShot:

在此输入图像描述

  • 好吧,我接受了这个作为答案,但我更倾向于一个解释或正确方向的一点,然后是一段代码,没有描述它是如何或为什么工作的.当我询问错误处理及其工作原理时,我只是得到了一个响应,它确实有效.这不是本网站的用途,不是要求答案而是要学习.所以对于未来的任何人.Collection变量仅适用于2个条件.将密钥与要添加的值相关联,2忽略在复制密钥时告诉您的错误. (4认同)
  • 但是这个集合仍然是一个错误,你只是处理它. (2认同)