You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用VBA删除Excel中L列包含SAGI的行?

一键删除Excel中L列含“SAGI”行的宏方案

嘿,完全懂你的困扰——L列单元格里混着操作描述,单纯用筛选根本没法精准定位带“SAGI”的行,手动删几百行太费时间了。下面给你整了个直接能用的宏,一键就能搞定这个活儿:

第一步:插入宏代码

  1. 打开你的Excel文件,按下 Alt + F11 打开VBA编辑器
  2. 在左侧的项目面板里找到你的工作簿,右键点击它,选择「插入」→「模块」
  3. 把下面的代码粘贴到弹出的模块编辑窗口里:
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,点击「执行」就行

方式二:添加一键按钮(更方便)

  1. 右键点击Excel顶部的快速访问工具栏,选择「自定义快速访问工具栏」
  2. 在「选择命令来自」里选「宏」,找到 DeleteSAGIRows 后添加到右侧列表,确定退出
  3. 以后只要点一下快速访问栏上这个宏的按钮,就能直接执行删除操作

几个关键提醒

  • 先备份! 运行宏前最好把文件另存一份,万一误删还能找回数据
  • 如果你的表格有表头,记得把循环起始行改成表头下一行,比如把 For i = lastRow To 1 Step -1 改成 For i = lastRow To 2 Step -1,别把表头删了
  • 代码里的vbTextCompare是不区分大小写匹配(比如sagi、Sagi也会被匹配),要是你只想删严格大写的“SAGI”,把这个参数改成vbBinaryCompare就行

内容的提问来源于stack exchange,提问作者Marco

火山引擎 最新活动