如何用VBA删除Excel中L列包含SAGI的行?
一键删除Excel中L列含“SAGI”行的宏方案
嘿,完全懂你的困扰——L列单元格里混着操作描述,单纯用筛选根本没法精准定位带“SAGI”的行,手动删几百行太费时间了。下面给你整了个直接能用的宏,一键就能搞定这个活儿:
第一步:插入宏代码
- 打开你的Excel文件,按下
Alt + F11打开VBA编辑器 - 在左侧的项目面板里找到你的工作簿,右键点击它,选择「插入」→「模块」
- 把下面的代码粘贴到弹出的模块编辑窗口里:
Sub DeleteSAGIRows() Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 这里默认操作当前激活的工作表,要指定固定表的话改成 Set ws = ThisWorkbook.Sheets("你的表名") Set ws = ActiveSheet ' 获取L列最后一行的行号,避免遍历空行 lastRow = ws.Cells(ws.Rows.Count, "L").End(xlUp).Row ' 从最后一行往上遍历(重点!从上往下删会跳行) For i = lastRow To 1 Step -1 ' 检查单元格是否包含"SAGI",vbTextCompare是不区分大小写,要严格匹配就改成vbBinaryCompare If InStr(1, ws.Cells(i, "L").Value, "SAGI", vbTextCompare) > 0 Then ws.Rows(i).Delete ' 删除符合条件的行 End If Next i MsgBox "搞定!所有L列带""SAGI""的行都删完啦~", vbInformation End Sub
第二步:运行宏的两种方式
方式一:快捷键调用
- 回到Excel界面,按下
Alt + F8,在弹出的宏列表里选中DeleteSAGIRows,点击「执行」就行
方式二:添加一键按钮(更方便)
- 右键点击Excel顶部的快速访问工具栏,选择「自定义快速访问工具栏」
- 在「选择命令来自」里选「宏」,找到
DeleteSAGIRows后添加到右侧列表,确定退出 - 以后只要点一下快速访问栏上这个宏的按钮,就能直接执行删除操作
几个关键提醒
- 先备份! 运行宏前最好把文件另存一份,万一误删还能找回数据
- 如果你的表格有表头,记得把循环起始行改成表头下一行,比如把
For i = lastRow To 1 Step -1改成For i = lastRow To 2 Step -1,别把表头删了 - 代码里的
vbTextCompare是不区分大小写匹配(比如sagi、Sagi也会被匹配),要是你只想删严格大写的“SAGI”,把这个参数改成vbBinaryCompare就行
内容的提问来源于stack exchange,提问作者Marco




