凡是某单元有特定字符的,则删除整行 (VBA )

本文介绍了一段VBA代码,该代码用于在Excel工作表中批量删除满足特定条件的行。具体条件包括:B列包含“研发部”或“技术部”,C列包含“检测”、“修理”或“生产”,E列包含“基建仓库”或“成品仓库”。通过使用这段代码,可以高效地清理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有个工作表,有N行N列,B列是领料部门,C列是领料用途,E列是发料仓库,凡是B列有“研发部”、“技术部”,则整行删除;

凡是C列有“检测”、“修理”、“生产”,则整行删除;凡是E列有“基建仓库”、“成品仓库”,则整行删除。


  1. Sub Delrows() 
  2.     Dim Arr, k&

  3.     Arr = [A1].CurrentRegion
  4.     Application.ScreenUpdating = False
  5.     For k = UBound(Arr) To 1 Step -1
  6.         If InStr(Arr(k, 2), "研发部") + InStr(Arr(k, 2), "技术部") + _
  7.            InStr(Arr(k, 3), "检测") + InStr(Arr(k, 3), "修理") + InStr(Arr(k, 3), "生产") + _
  8.            InStr(Arr(k, 5), "基建仓库") + InStr(Arr(k, 5), "成品仓库") Then
  9.             Rows(k).Delete
  10.         End If
  11.     Next
  12.     Application.ScreenUpdating = True
  13. End Sub

### 如何在WPS中批量删除某些内容 #### 使用查找与替换功能 通过使用`Ctrl+H`快捷键,可以快速调出“查找与替换”对话框。在此界面下,可以在“查找内容”栏位输入想要删除的内容模式(如特定字符、空格或其他格式化标记),并将“替换为”留空后执“全部替换”。这种方法适用于简单文本或特殊符号的大规模移除操作[^1]。 #### Excel表格中的空清除 对于含有大量非连续空白的Excel文件,可采用筛选法来高效完成清理工作。具体步骤包括先插入辅助列填充序列号以便后续恢复原始顺序;接着利用自动筛选功能找出并选中所有完全空白之记录;最后右键选择删除所选定区域即可一次性消除多处冗余间隔[^2]。 #### 利用VBA脚本自动化处理复杂需求 针对更高级别的定制化任务比如周期性重现头部信息等问题,则推荐运用Visual Basic for Applications (VBA) 编程语言编写相应逻辑代码来进针对性解决。例如下面给出了一段用于去除多余子标题实例程序片段: ```vba Sub RemoveDuplicateHeaders() Dim rng As Range Set rng = ActiveSheet.UsedRange.Columns(1) Application.ScreenUpdating = False With CreateObject("Scripting.Dictionary") .CompareMode = vbTextCompare For Each cell In rng.Cells If Not IsEmpty(cell.Value) And Len(cell.Value) > 0 Then If Not .Exists(cell.Value) Then .Add Key:=cell.Value, Item:=Nothing Else cell.EntireRow.Delete Shift:=xlUp End If End If Next cell End With Application.ScreenUpdating = True End Sub ``` 上述宏函数能够遍历指定范围内的每一项单元格值,并借助字典对象判断当前读取到的数据是否已经存在过一次以上的情况发生——如果是的话则直接将其整行物理上予以销毁动作[^3]。 #### 图表域编号一致性维护 另外还有一种场景涉及到跨源整合资料过程中产生的图片序列表意混乱状况,此时也可以考虑依赖JavaScript Macros技术手段达成目的。这里提供了一个基础版本示范例子供参考学习: ```javascript function deleteChartRows() { var doc = DocumentApp.getActiveDocument(); var body = doc.getBody(); // Iterate through all elements in the document. for(var i=body.getNumChildren()-1;i>=0;i--){ var child = body.getChild(i); if(child.getType()==DocumentApp.ElementType.TABLE){ let table = child.asTable(); for(let rowIndex=table.getNumRows()-1;rowIndex >=0 ;rowIndex-- ){ const row = table.getRow(rowIndex); try{ eval(row.getText()); // This will throw an error on non-JS code rows like images captions etc.. }catch(e){ table.removeRow(rowIndex); } } } } } ``` 此段脚本主要作用在于扫描整个文档结构树形节点集合体当中是否存在不符合预期定义标准的部分(此处假设凡是无法被解析成合法 JavaScript 表达式的项目均视为异常情况对待),一旦发现即刻实施摘除措施以保持整体风格上的连贯统一效果[^4]。 #### 定位并删除空白单元格 除了前面提到过的几种方式之外,还有另一种特别简便易的办法专门用来对付那些顽固残留下来的孤立零星空白区块现象。那就是按下 `Ctrl + G` 组合热键启动 “转至(Go To)” 功能面板之后切换选项卡找到名为 ”Special…“ 的按钮链接继续深入探索直至锁定目标类别为止 —— 这里我们需要勾选的是代表无任何有效载荷含义状态下的那个单项标签叫做 ‘Blanks’ 。做完这一切准备工作以后只需轻轻一点鼠标右键菜单里的 Delete 命令就能顺利解决问题啦[^5]!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值