我想搜索一个以数字结尾的字符串,但之前不知道它是什么数字
所以我使用 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 位数字。
阅读问题下面的评论后
数字是随机的,我要查找的实际字符串始终以 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)
| 归档时间: |
|
| 查看次数: |
9070 次 |
| 最近记录: |