我正在尝试从字符串中提取5或6位数字的代码。
C:\ Users \ pthaxthon \ Desktop \ 45697_Originals
C:\ Users \ pthaxthon \ Desktop \ 123456_Originals
我只需要5或6位数字
数字始终出现在第四个破折号之后和第一个_
之前我尝试使用mid和split命令,但没有成功
Range("D14").Value = Mid(fle, 28, 6)
我只需要5或6位数字
答案 0 :(得分:1)
由于数字始终在第28位和后面的“ _”字符之间,因此可以继续;
Range("D14").Value = Split(Mid(fle, 28), "_")(0)
答案 1 :(得分:1)
另一个解决方案是依靠“数字总是出现在第四个破折号之后和第一个_之前”。然后您可以按以下方式使用split
Option Explicit
Function GetNo(s As String) As String
Const BSLASH = "\"
Const UNDERSCORE = "_"
Const FOUR = 4
Dim v As Variant
' Split the string by backslash
v = Split(s, BSLASH)
' Take always the fourth entry and split it by underscore
v = Split(v(FOUR), UNDERSCORE)
' take string before the underscore
GetNo = v(0)
End Function
Sub TestIt()
Dim inp As String
inp = "C:\Users\pthaxthon\Desktop\123456_Originals"
inp = "C:\Users\pthaxthon\Desktop\45697_Originals"
Debug.Print GetNo(inp)
End Sub
答案 2 :(得分:1)
您还可以使用正则表达式提取数字。
Set SDI = CreateObject("VBScript.RegExp")
SDI.Pattern = "\d+" '* keep the number only
Set Num_out = SDI.Execute(Str_In)
Criteria_out = Val(Num_out(0))