大家早上好,我有一个包含 17 个字段和一些行(10-20 行)的列表对象,我需要过滤列表对象以查找我在列中找到的任何不同值。这个过滤的列表对象必须按另一个整数列按升序排序,然后我必须找到不按顺序的数据并获得连续数字的最小值和最大值。
为了获得唯一值,我编写了这个运行良好的函数:
Public Function GetUnique(Inputrange As Range)
Dim d As Object, c As Range, k, tmp As String
Set d = CreateObject("scripting.dictionary")
For Each c In Inputrange
tmp = Trim(c.Value)
If Len(tmp) > 0 Then d(tmp) = d(tmp) + 1
Next c
GetUnique = d.Keys
End Function
要过滤数据并对过滤后的数据进行排序,我正在尝试使用此代码
Dim tblaux as listobject
Dim RdS as variant
Dim r as variant
With tblaux
Z = GetUnique(.ListColumns(7).DataBodyRange)
For Each RdS In Z
.Range.AutoFilter Field:=7, Criteria1:="=" & RdS
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range.Columns(1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
Set r = .rng.Offset(1, 0).Resize(.rng.Rows.Count - 1, .rng.Columns.Count).SpecialCells(xlCellTypeVisible)
End With
Next RdS
End with
我从这段代码中得到的应该是一个包含过滤和排序数据的数组,但我得到的是与表中不连续的行相对应的多个区域。
我有点生气,但我无法解决这个问题。
感谢您的支持