请求修改Excel VBA宏以动态删除含Total的整行
动态删除含数字+"Total"字样行的VBA宏
解决方案代码
替换你现有固定匹配的宏,使用Excel通配符实现动态匹配,无需每周手动更新匹配列表:
Sub DeleteTotalRows() Dim ws As Worksheet Set ws = ActiveSheet ' 可替换为指定工作表,如 ThisWorkbook.Worksheets("你的工作表名") ' 清除已有筛选状态 If ws.AutoFilterMode Then ws.AutoFilterMode = False ' 动态获取C列最后一行数据的范围(避免固定行号限制) Dim dataRange As Range Set dataRange = ws.Range("C1:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row) ' 应用筛选:匹配包含数字且后缀为" Total"的内容 dataRange.AutoFilter Field:=1, Criteria1:="*#* Total", Operator:=xlFilterValues ' 删除筛选出的可见行(跳过表头行) On Error Resume Next ' 处理无匹配行的情况,避免报错 dataRange.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete On Error GoTo 0 ' 关闭自动筛选 ws.AutoFilterMode = False End Sub
关键改进说明
- 动态范围适配:不再固定
C1:C60,自动识别C列最后一行有数据的行,适配数据量变化 - 通配符动态匹配:用
*#* Total作为筛选条件:*:匹配任意长度的前缀字符#:匹配单个数字(确保内容包含数字)Total:匹配后缀的" Total"(和你示例中的格式一致)
- 安全删除逻辑:跳过表头行删除,添加错误处理避免无匹配行时程序报错
- 无需手动更新:每周数据名称变化时,只要格式保持「任意内容+数字+ Total」,就能自动匹配删除
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

