You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VBA检查单元格是否包含指定格式年份并删除不匹配行

VBA实现A列年份匹配删行代码

你原代码中的InStr函数不支持正则通配符匹配,因此需要引入正则对象来实现你的需求,以下是可直接运行的完整代码:

Sub DeleteRowsWithoutValidYear()
    Dim finalRow As Long, i As Long
    Dim reg As Object
    ' 后期绑定正则对象,无需手动添加引用
    Set reg = CreateObject("VBScript.RegExp")
    With reg
        .Global = True
        ' 匹配规则:包含1990-1999或2000-2022的年份
        .Pattern = "199[0-9]|20[0-2][0-2]"
    End With
    
    ' 获取A列最后一行行号
    finalRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' 从最后一行向上遍历,避免删行导致漏判
    For i = finalRow To 2 Step -1
        ' 单元格内容不匹配规则则删除整行
        If reg.Test(Cells(i, 1).Value) = False Then
            Rows(i).Delete
        End If
    Next i
    
    ' 释放对象
    Set reg = Nothing
End Sub

注意事项

  • 如果你需要严格匹配单元格内容仅为对应年份、不允许包含其他字符,可以把正则规则修改为^199[0-9]$|^20[0-2][0-2]$
  • 代码默认从第2行开始遍历,如果你需要包含第1行表头,把循环条件里的To 2修改为To 1即可
  • 运行前建议先备份原数据,避免误删无法恢复

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 08:24:03