Vba excel instr函数,带有以未知数字结尾的搜索字符串

0 excel vba

我想搜索一个以数字结尾的字符串,但之前不知道它是什么数字

所以我使用 InStr 函数

   InStr(Range("B" & row).Value), "text")
Run Code Online (Sandbox Code Playgroud)

但现在的问题是,我要搜索的可以是“text0”,“text1”,“text9”,我不想创建10次Instr函数来测试所有10个数字。

我正在寻找的是像 # 这样的替换字符,它代表 Acces 中输入掩码中的任何给定数字。所以像这样的事情

InStr(Range("B" & row).Value), "text" &  #)
Run Code Online (Sandbox Code Playgroud)

粗略地说,这将不起作用,因为 Excel 会将其视为搜索“text#”,并且不会将其解释为 # 是任何给定的数字。

编辑:范围(“B”和行)。值将评估为例如“9S 279P3NOV/PDE NN1 PRS NO NVML”

我需要知道 NN1 在哪里,以便我可以提取它。

但下一行可以计算为“9S 2793NOV/PE NN12 REQ BANA”,所以我再次需要知道 NN12 在哪里,还要注意 NN12 更改之前的文本以及 NN 现在有 2 位数字。

Sid*_*out 5

阅读问题下面的评论后

数字是随机的,我要查找的实际字符串始终以 NN 开头,因此找到的字符串可以是 NN1、NN5 甚至实际上是 NN25。之前无法得知这个数字是多少。

这就是你正在尝试的吗?将 与通配符一起使用LIKE

尝试这个

Sub Sample()
    Dim stringToTest(1 To 5) As String
    Dim i As Long

    stringToTest(1) = "Test01"
    stringToTest(2) = "Test01Test"
    stringToTest(3) = "123"
    stringToTest(4) = "01Test01"
    stringToTest(5) = "NNature1234"

    For i = 1 To 5
        If stringToTest(i) Like "NN*#" Then Debug.Print stringToTest(i)
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

评论/最近编辑问题的后续行动

如果您的格式将如问题中所示,即会有空格,那么请尝试此操作

Sub Sample()
    Dim s As String, stringToTest(1 To 2) As String
    Dim ar
    Dim i As Long, j As Long

    stringToTest(1) = "9S 279P3NOV/PDE NN1 PRS NO NVML"
    stringToTest(2) = "9S 2793NOV/PE NN12 REQ BANA"

    For i = 1 To 2
        s = stringToTest(i)
        If s Like "*NN*#*" And InStr(1, s, " ") Then
            ar = Split(s, " ")
            For j = LBound(ar) To UBound(ar)
                If ar(j) Like "NN*#" Then
                    Debug.Print ar(j)
                    Exit For
                End If
            Next j
        End If
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

输出

NN1
NN12
Run Code Online (Sandbox Code Playgroud)