Excel VBA - 查找带有通配符的字符串

2024-02-01

我试图查找包含通配符的字符串。我需要找到该字符串在特定行中出现的位置。该字符串均采用“IP##W## XX”的形式,其中 XX 是我用来查找值的 2 个字母,## 是可以是任何随机数的数字通配符。因此,这就是我的查找字符串的样子:

FullLookUpString = "IP##W## " & LookUpString

我尝试使用Find命令查找首次发生此情况的列,但我不断收到错误。这是我到目前为止所做的,但它不起作用:L 如果有人有简单的方法的话。对 VBA 还很陌生-.-

Dim GatewayColumn As Variant
Dim GatewayDateColumn As Variant
Dim FirstLookUpRange As Range
Dim SecondLookUpRange As Range

FullLookUpString = "IP##W## " & LookUpString

Set FirstLookUpRange = wsMPNT.Range(wsMPNT.Cells(3, 26), wsMPNT.Cells(3, lcolumnMPNT))

Debug.Print FullLookUpString

GatewayColumn = FirstLookUpRange.Find(What:=FullLookUpString, After:=Range("O3")).Column

Debug.Print GatewayColumn

根据@SJR 的评论,您可以通过两种方式执行此操作。使用LIKE https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/like-operator模式是:

IP##W## [A-Z][A-Z]

使用正则表达式,模式为:

IP\d{2}W\d{2} [A-Z]{2}

示例代码:

Option Explicit

Sub FindString()

    Dim ws As Worksheet
    Dim rngData As Range
    Dim rngCell As Range

    Set ws = ThisWorkbook.Worksheets("Sheet1") '<-- set your sheet
    Set rngData = ws.Range("A1:A4")

    ' with LIKE operator
    For Each rngCell In rngData
        If rngCell.Value Like "IP##W## [A-Z][A-Z]" Then
            Debug.Print rngCell.Address
        End If
    Next rngCell

    ' with regular expression
    Dim objRegex As Object
    Dim objMatch As Object

    Set objRegex = CreateObject("VBScript.RegExp")
    objRegex.Pattern = "IP\d{2}W\d{2} [A-Z]{2}"
    For Each rngCell In rngData
        If objRegex.Test(rngCell.Value) Then
            Debug.Print rngCell.Address
        End If
    Next rngCell

End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel VBA - 查找带有通配符的字符串 的相关文章

随机推荐