似乎将过滤器应用于表已经破坏了我对如何处理它的理解。
我有一个包含多列的表格。我要过滤其中一个列并对另一个列进行排序。之后,我想选择/复制过滤到另一个表中的前10行特定列。
我可以在过滤之前轻松完成此操作。我需要在应用滤镜后的前10行。我没有看到如何在过滤器后选择第10行。
有人能指出我的VBA参考资料,解释如何执行此操作吗?我需要使用SQL来执行此操作吗?我是不是在考虑这个并且太复杂了?
答案 0 :(得分:2)
以下用于在应用过滤后选择F列的前10个可见单元格。如果要排除标题单元格,则需要从F2开始。
Sub TenVisible()
Dim rng As Range
Dim rngF As Range
Dim rng10 As Range
Set rngF = Range("F:F").SpecialCells(xlCellTypeVisible)
For Each rng In Range("F:F")
If Not Intersect(rng, rngF) Is Nothing Then
If rng10 Is Nothing Then
Set rng10 = rng
Else
Set rng10 = Union(rng10, rng)
End If
If rng10.Cells.Count = 10 Then Exit For
End If
Next rng
Debug.Print rng10.Address
'.. $F$1:$F$2,$F$4:$F$5,$F$9:$F$10,$F$12,$F$20:$F$21,$F$23
rng10.Select
End Sub
以下是从F2向下选择的多种方法之一(假设UsedRange
从第1行开始):
Set rngF = Range("F2", Cells(ActiveSheet.UsedRange.Rows.Count, _
Range("F2").Column)).SpecialCells(xlCellTypeVisible)
答案 1 :(得分:0)
对于它的价值,看到这是这类问题的第一个搜索结果之一 -
在命名列上过滤表后,如下所示:
Worksheets("YourDataSheet").ListObjects("Table_Name").Range.AutoFilter _
field:=Worksheets("YourDataSheet").ListObjects("Table_Name").ListColumns("ColumnName").Index, _
Criteria1:="FilterFor..."
...然后我可以使用以下方法将生成的单个可见行复制到另一个工作表:
Worksheets("YourDataSheet").Range("Table_Name").SpecialCells(xlCellTypeVisible).Range("A1").EntireRow.Copy _
Destination:=Range("AnotherSheet!$A$2").EntireRow
这是过滤后引用可见行的一种方法。 HTH。