Excel VBA:如何用通配符匹配动态表头删除两行间内容
修改VBA代码实现通配符匹配起始行
要实现匹配所有以Property: 开头的动态表头,只需把原代码中精确匹配起始行的逻辑改成通配符模糊匹配,VBA里可以用Like运算符实现这一需求。
修改要点
原代码中判断起始行的条件是精确匹配固定字符串,我们需要替换为通配符匹配逻辑,无需再定义固定的strStart变量。
修改后的完整代码
Dim strEnd As String Dim DELETEMODE As Boolean Dim DelRng As Range strEnd = "Total" DELETEMODE = False For r = 1 To Range("A" & Rows.Count).End(xlUp).Row '遍历所有已使用行 '遇到Total行,关闭删除模式 If Range("A" & r).Value = strEnd Then DELETEMODE = False '如果处于删除模式,将当前行加入待删除范围 If DELETEMODE Then If DelRng Is Nothing Then Set DelRng = Range("A" & r) Else Set DelRng = Application.Union(DelRng, Range("A" & r)) End If End If '匹配所有以Property: 开头的行,开启删除模式 If Range("A" & r).Value Like "Property: *" Then DELETEMODE = True Next r '一次性删除所有待删除行 If Not DelRng Is Nothing Then DelRng.EntireRow.Delete xlShiftUp
关键说明
- 通配符匹配逻辑:
Like "Property: *"中的*是通配符,代表任意长度的任意字符,能匹配Property: A、Property: B、Property: 123等所有以Property:开头的内容。 - 大小写处理:默认
Like运算符区分大小写,若需忽略大小写,可在代码开头添加Option Compare Text,或者修改判断逻辑为:If UCase(Range("A" & r).Value) Like "PROPERTY: *" Then DELETEMODE = True - 效率优化:代码最后一次性删除所有待删除行,比逐行删除效率更高,还能避免行号变动导致的匹配错误。
内容的提问来源于stack exchange,提问作者Yosef Merves
相关产品推荐
相关产品推荐

