如何从范围中获取数据然后将它们放在数组中并在excel vba中对它们进行排序?

时间:2018-03-20 07:06:32

标签: arrays excel vba

我需要从列中获取唯一值(来自sheet1的列c)并在数组中具有唯一值,以便我可以从该数组中重新使用它们。

我是新来的,请帮助我。

2 个答案:

答案 0 :(得分:0)

此代码只是为了帮助您入门。要查看其工作原理,请先选择您的数据范围,然后单步执行此代码。请注意,在排序后,它将范围放入变量(a)中,然后只是为了确认它在那里,变量被放置在原始范围旁边。然后,您可以根据需要使用该变体。

Sub sort()
  Dim r As Range, a As Variant
  Set r = Selection
  With ActiveSheet.sort
    .SetRange r
    .Apply
  End With
  a = r
  r.Offset(0, 1) = a
End Sub

答案 1 :(得分:0)

您可以使用Dictionary对象

这是一个从传递的Range引用中检索所有唯一值的函数

Function uniqueValues(columnRng As Range) As Variant
    Dim cell As Range

    With CreateObject("Scripting.Dictionary")
        For Each cell In columnRng.SpecialCells(xlCellTypeConstants)
            .Item(cell.Value) = 1
        Next
        uniqueValues = .Keys
    End With
End Function

此功能可能会在您的" mian"代码如下:

Sub main()
    Dim values As Variant

    values = uniqueValues(Columns("C")) 
End Sub