Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel-需要一个在字符串中查找模式数据的函数_Excel_Vba - Fatal编程技术网

VBA Excel-需要一个在字符串中查找模式数据的函数

VBA Excel-需要一个在字符串中查找模式数据的函数,excel,vba,Excel,Vba,我想知道是否有一个函数可以拉出一个匹配某个模式的字符串。我现在正试图找出这个:“C3-4”,它位于一个字符串中,并且在多个不同的部分中找到。字符串也会改变,例如它可能是L2-3,所以我需要这个函数,如果它存在的话,能够识别一个模式,比如AX-X(a是字母,X是数字,-是a-),任何帮助都将不胜感激。对不起,如果这个问题是模糊的,我还没有任何程序编写来帮助给出一个例子,因为我需要这个给我一个基线来开始编程 ==编辑=== 我已经能够得出这个结论,但是我认为我的模式是不正确的,当它应该评估为“是”时

我想知道是否有一个函数可以拉出一个匹配某个模式的字符串。我现在正试图找出这个:“C3-4”,它位于一个字符串中,并且在多个不同的部分中找到。字符串也会改变,例如它可能是L2-3,所以我需要这个函数,如果它存在的话,能够识别一个模式,比如AX-X(a是字母,X是数字,-是a-),任何帮助都将不胜感激。对不起,如果这个问题是模糊的,我还没有任何程序编写来帮助给出一个例子,因为我需要这个给我一个基线来开始编程

==编辑===

我已经能够得出这个结论,但是我认为我的模式是不正确的,当它应该评估为“是”时,它评估为“否”:

试试这个

我对图案做了一点修改。第一个分组需要单个字母字符,后面可能是一个或两个数字的数字,后面是破折号(用\转义,否则它在regexp中有特殊含义),后面是单个数字字符。如果你不明白我在这里做了什么,请告诉我,我会尽量解释得更清楚一点

Sub RegEx_Tester()
Set objRegExp_1 = CreateObject("vbscript.regexp")
objRegExp_1.Global = True
objRegExp_1.IgnoreCase = True
objRegExp_1.Pattern = "[A-Z]{1}[0-9]{1,2}\-[0-9]{1}"
strToSearch = "L5-1"

Set regExp_Matches = objRegExp_1.Execute(strToSearch)
WScript.Echo regExp_Matches.Count
If regExp_Matches.Count = 1 Then
    MsgBox ("Yes")
Else
    MsgBox ("No")
End If
End Sub

需要查找的内容称为正则表达式。谷歌会给你很多这样的例子,现在你知道它叫什么了。查看后,如果您仍然有问题,请将您尝试过的内容发回,我们会帮您解决。:)@Dave,我已经编辑了原来的帖子来获得我的新代码,我相信这个模式有点混乱,希望能得到帮助。不用担心,很高兴它能帮上忙。
Sub RegEx_Tester()
Set objRegExp_1 = CreateObject("vbscript.regexp")
objRegExp_1.Global = True
objRegExp_1.IgnoreCase = True
objRegExp_1.Pattern = "[A-Z]{1}[0-9]{1,2}\-[0-9]{1}"
strToSearch = "L5-1"

Set regExp_Matches = objRegExp_1.Execute(strToSearch)
WScript.Echo regExp_Matches.Count
If regExp_Matches.Count = 1 Then
    MsgBox ("Yes")
Else
    MsgBox ("No")
End If
End Sub