VBA代码保留TOP 11行

时间:2016-12-29 21:27:32

标签: excel vba

每次我过滤数据并删除剩余的杂乱时,我想保留前11行(前10行加上标题)。任何人都可以帮助我????

condition 1 : A.TIMEZONE = 1 (Timezone field is not unique)
condition 2 : B.TIMEZONE = 1
condition 3 : ST_Intersects(A.SHAPE, B.SHAPE) (Shape field is where the geographical information is stored)

目前我有这个代码,但这不灵活,因为我的过滤数据范围将是动态的。所以我想要一个保留前10行和标题的代码,并删除每个过滤数据的剩余所有行(过滤器1到过滤器28)。

提前致谢

1 个答案:

答案 0 :(得分:0)

我很难将此代码概念化,因为您似乎每次都会覆盖现有数据。很可能,我很难想象你的数据是什么样的,这样就可以了。

那就是说,如果我按照你的面值采用你的代码并假设它按照你的预期进行,但是你不想对过滤器的每次迭代进行硬编码,那么这段代码将是一个有效的替代你做了以上所有28个过滤器。

Sub macro()

  Dim ws, sorts As Worksheet
  Dim LastRow, filter, nextRow As Long
  Dim sortRange As Range

  Set ws = Worksheets("Top10_WO")
  Set sorts = New Worksheet
  LastRow = Cells(Rows.Count, 1).End(xlUp).Row
  nextRow = 12

  For filter = 1 To 28

    ws.Range("B1").AutoFilter field:=2, Criteria1:="fiter" & filter, VisibleDropDown:=True
    sortRange.Sort Key1:=Range("J2"), Order1:=xlAscending
    Range("A" & nextRow & ":J" & LastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    nextRow = nextRow + 10

  Next filter

End Sub