Excel VBA 如何删除动态大小工作表中D列含'CHF'的行
适配动态数据范围的D列CHF行删除方案
无代码长期重复使用方案(Power Query,每周10秒完成)
- 选中当前数据区域的任意单元格,依次点击「数据」选项卡 →「从表格/区域」,弹窗中根据表格是否有表头勾选「我的表格有标题」后确认,Power Query会自动识别当前所有连续有效数据,无需手动固定范围
- 在Power Query编辑器中找到D列对应的列,点击列头筛选箭头 →「文本筛选器」→「不包含」
- 输入匹配条件
CHF,确认后编辑器将自动过滤掉所有D列含CHF的行 - 点击「开始」选项卡 →「关闭并上载」,可选择将处理后的数据上载到新工作表
- 后续每周更新原始数据后,仅需右键已上载的处理结果表 →「刷新」,即可自动适配新的行数/列数,重复执行过滤逻辑
临时单次处理方案
- 点击D列列头选中整列,Excel会自动识别D列所有有效数据范围
- 按快捷键
Ctrl+F调出查找弹窗,查找内容输入CHF,点击「查找全部」 - 按
Ctrl+A全选所有匹配结果,关闭查找弹窗 - 右键任意选中的行号 →「删除」,即可一次性删除所有对应行
VBA自定义脚本方案(可绑定按钮重复调用)
- 按
Alt+F11打开VBA编辑器,双击左侧对应目标工作表,粘贴以下代码:
Sub 删除D列含CHF的行() Dim lastRow As Long, i As Long ' 自动获取D列最后一个有效行号,适配每周变动的范围 lastRow = Cells(Rows.Count, "D").End(xlUp).Row ' 从最后一行向上遍历,避免删除行导致行号错位遗漏 For i = lastRow To 1 Step -1 ' 匹配单元格包含CHF的情况,默认不区分大小写(如需区分可将vbTextCompare改为vbBinaryCompare) If InStr(1, Cells(i, "D").Value, "CHF", vbTextCompare) > 0 Then Rows(i).Delete End If Next i End Sub
- 按
F5运行脚本即可自动完成处理,后续可将该宏绑定到工作表按钮,点击直接执行。
内容的提问来源于stack exchange,提问作者NWL
相关产品推荐
相关产品推荐

