Excel VBA宏:合并过滤器并使用宏来删除可见和后续的空行

时间:2017-10-27 15:14:13

标签: excel excel-vba filter delete-row worksheet-function vba

我有一个包含大约50,000行数据的电子表格。这个值会波动,因为我有一个带来更多数据的功能。

我希望能够使用我的列过滤器(第2行)来显示我不想要的项目。 然后宏将删除所有可见值,关闭过滤器,删除所有空行,最后重新打开第2行中的过滤器。以下代码旨在执行此操作,但在整个数据矩阵中留下空行。谢谢您的帮助!

Sub DeleteVisible_Empty_BlankRows()
  Application.ScreenUpdating = False
  Range("C3:V" & rows.count).ClearContents
  Worksheets("MyDataPull").AutoFilterMode = False

'Ungroup & regroup necessary columns
  Columns("F:K").Columns.Ungroup

  Dim r As Range, emrows As Long, i As Long
  LRI = Mydatapull.Cells(Mydatapull.rows.count, "C").End(xlUp).Row

'Filter column C from A to Z so that blanks are put at the bottom
  Range("C3:V" & LRI).Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

'Filter to only show blanks
  Range("C3:V" & LRI).AutoFilter Field:=1, Criteria1:="=", Operator:=xlOr, Criteria2:="=" & ""

'Delete blanks
  Range("C3:V" & LRI).EntireRow.Delete

'Turn filters back on
  Worksheets("MyDataPull").AutoFilterMode = False

'Delete Extra rows
  LRI = Mydatapull.Cells(Mydatapull.rows.count, "C").End(xlUp).Row
  Range("C" & LRI + 1 & ":V" & rows.count).EntireRow.Delete

  Mydatapull.Range("C2:V2").AutoFilter
  Columns("F:K").Columns.Group

End Sub

2 个答案:

答案 0 :(得分:0)

您是否尝试过首先对数据进行过滤,然后删除空行?当纸张未经过滤时,我个人在处理内容方面取得了更大的成功。 尝试添加:

ActiveSheet.AutoFilter.Sort.SortFields.Clear ActiveSheet.ShowAllData

删除空行之前。

请告诉我这是否适合您。

答案 1 :(得分:0)

我想出来了。请参阅上面的更新代码。

相关问题