我正在寻找一些VBA帮助清理工作表,方法是删除我不需要的数据行,并根据多个条件保留我所做的数据行。
我希望能够在A列中保留任何等于“Subtotal:”的Row,并且在删除所有其他与该条件不匹配的行时保留包含C列中数字的任何行。
答案 0 :(得分:1)
我写了一个应该能够完成工作的函数。
因此,你可以从一个sub调用该函数并传递你想要测试的列号(1代表" A"),你要测试的值("" for blank),您要测试的工作表的名称。最后一个参数是一个布尔值,如果为true,它将在匹配条件中的值时删除,否则它将删除其他任何内容。
MYSQL_BIND
所以,为了做你上面提出的要求,你可以这样做:
sprintf()
答案 1 :(得分:0)
您可能需要尝试以下(注释)代码:
Option Explicit
Sub main()
With Worksheets("MySheetName") '<--| change "MySheetName" to your actual sheet name
With Intersect(.UsedRange, .Columns("A:C"))
.AutoFilter Field:=1, Criteria1:="<>Subtotal" '<--| filter column "A" cells not containing "Subtotal"
If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Offset(1).Resize(.rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete '<--| delete any filtered cell row
.AutoFilter '<--| show all data back
With .Offset(1, 2).Resize(.rows.Count - 1, 1) '<--| consider column "C" cell from header row (excluded) down
DeleteRows .Cells, xlCellTypeConstants, xlTextValues '<--| delete any "constant text" cell row
DeleteRows .Cells, xlCellTypeFormulas, xlTextValues '<--| delete any "formula text" cell row
DeleteRows .Cells, xlCellTypeBlanks, xlTextValues '<--| delete any "blank" cell row
End With
End With
End With
End Sub
Sub DeleteRows(rng As Range, cellType As XlCellType, cellsValue As XlSpecialCellsValue)
Dim f As Range
Set f = rng.SpecialCells(cellType, cellsValue)
If Not f Is Nothing Then f.EntireRow.Delete
End Sub