请求编写筛选含AUDJPY等货币对的Excel宏或替代方案
保留含指定内容的行(删除无关行)
一、无需宏的简便操作(适合单次/少量操作)
- 选中存放货币对的目标列(比如A列)
- 点击「数据」选项卡 → 「筛选」,开启列筛选功能
- 点击列标题的筛选箭头 → 「文本筛选」→ 「不包含」,输入要排除的内容(比如
AUDJPY),点击确定 - 此时显示的所有行都是需要删除的,选中这些行(点击行号可全选),右键选择「删除行」
- 再次点击筛选箭头,选择「清除筛选」,即可保留所有含指定内容的行
二、VBA宏代码(适合重复批量操作)
固定指定内容版(直接修改代码切换货币对)
Sub KeepRowsWithSpecificText() Dim targetText As String Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 修改这里的内容切换要保留的货币对 targetText = "AUDJPY" Set ws = ActiveSheet ' 操作当前激活的工作表 ' 获取数据区域最后一行(假设数据在A列,可修改为对应列字母) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' 从下往上遍历删除,避免因行号变动漏删 For i = lastRow To 2 Step -1 ' 第1行是表头,从第2行开始处理 ' 检查单元格是否包含目标文本,不包含则删除该行 If InStr(1, ws.Cells(i, "A").Value, targetText, vbTextCompare) = 0 Then ws.Rows(i).Delete End If Next i End Sub
调整说明:
- 把
targetText的值改成"EURCAD"即可切换保留的货币对 - 若数据不在A列,将代码中的
"A"替换为对应列的字母(如"B") vbTextCompare表示不区分大小写,需严格区分则改为vbBinaryCompare
灵活输入版(运行时指定要保留的内容)
Sub KeepRowsWithInputText() Dim targetText As String Dim ws As Worksheet Dim lastRow As Long Dim i As Long ' 弹出输入框让用户指定要保留的货币对 targetText = InputBox("请输入要保留的货币对(如AUDJPY、EURCAD):", "指定保留内容") If targetText = "" Then Exit Sub ' 用户取消输入则终止运行 Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = lastRow To 2 Step -1 If InStr(1, ws.Cells(i, "A").Value, targetText, vbTextCompare) = 0 Then ws.Rows(i).Delete End If Next i End Sub
使用步骤:
- 按
Alt+F11打开VBA编辑器 - 右键当前工作簿 → 「插入」→ 「模块」,粘贴代码
- 保存工作簿为启用宏的格式(.xlsm)
- 按
F5运行宏,或在Excel界面添加宏按钮快速调用
内容的提问来源于stack exchange,提问作者Apples
相关产品推荐
相关产品推荐

