Excel-我需要从字符串中提取数字和字母的模式

Excel-我需要从字符串中提取数字和字母的模式,excel,Excel,我有一个很长的文本字符串,其中包含一个或两个数字,后跟1到3个字母。我需要将数字和字母一起提取到一个单独的单元格中。如果这种模式有多个实例,我希望excel在同一单元格中用逗号分隔它们 例如: A1:在位置2G处发现故障。B1:2G 或 A1:在32AB情况下,顶部缺失。B1:32AB 或 A1:在位置2G处发现故障。在32AB情况下,顶部缺失。B1:2G,32AB 我相信我在这里找到了基本情况: Function ExtractPos(ByVal text As String) As Stri

我有一个很长的文本字符串,其中包含一个或两个数字,后跟1到3个字母。我需要将数字和字母一起提取到一个单独的单元格中。如果这种模式有多个实例,我希望excel在同一单元格中用逗号分隔它们

例如:

A1:在位置2G处发现故障。B1:2G

A1:在32AB情况下,顶部缺失。B1:32AB

A1:在位置2G处发现故障。在32AB情况下,顶部缺失。B1:2G,32AB

我相信我在这里找到了基本情况:

Function ExtractPos(ByVal text As String) As String

Dim result As String
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = "(\d{1,2}\w{1,4})"
RE.Global = True
RE.IgnoreCase = True
Set allMatches = RE.Execute(text)

If allMatches.Count <> 0 Then
    result = allMatches.Item(0).SubMatches.Item(0)
End If

ExtractPos = result

End Function

您正在寻找什么类型的解决方案?VBA+正则表达式=非常简单,但仅Excel公式=相当困难。在任何情况下,你都尝试过什么?我一直在寻找一种使用excel公式的方法,但放弃了。我对vba很开放,但我是一个新手。没有人会在这里给你写代码。所以,请展示您的努力,并告诉我们您遇到了什么困难,我们很乐意帮助您。我需要一些帮助,以确定如何从输入字符串中排除返回的日期例如,我发现了字符串包含DDMMM或25JUN的案例,例如,我发现了字符串包含DDMMM或25JUN的案例,例如,我发现了字符串包含DDMMM或例如例如,例如,我发现了一些包含字符串包含DDMMM或25JUN的案例,例如,我发现了字符串包含DDMMM或例如,例如,我发现我可以通过用这个<代码>>Re>代码>Re>Re>Re.模式替换Re.模式来提取这一个例子,我发现我可以提取这一个提取出来,我发现我可以通过用这个<我的方法来提取这个方法来提取这个方法来提取这个方法来提取这个方法,我的方法,我发现我发现我可以通过用这个<代码,我的方法来替换Re.模式来提取这个<代码,我code>code>code>code>code>code>code>code>code>代码>Re>代码>Re.模式,Re>Re>Re>Re.模式,再再再再再再再再再"{2}十二月|)"但现在我不确定如何将所有日期值从输出中排除?@woodboaero”(\d{2}(一月|二月|三月|四月|五月|六月|七月|八月|九月|十月|十一月|十二月))简化形式
    Function RegexExtract(ByVal text As String, _
                      Optional seperator As String = "") As String

Dim i As Long, j As Long
Dim result As String
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = "(\d{1,2}\w{1,4})"
RE.Global = True
Set allMatches = RE.Execute(text)

For i = 0 To allMatches.Count - 1
    For j = 0 To allMatches.Item(i).submatches.Count - 1
        result = result & seperator & allMatches.Item(i).submatches.Item(j)
    Next
Next

If Len(result) <> 0 Then
    result = Right(result, Len(result) - Len(seperator))
End If

RegexExtract = result

End Function
"(\d{2}JAN|\d{2}FEB|\d{2}MAR|\d{2}APR|\d{2}MAY|\d{2}JUN|\d{2}JUL|\d{2}AUG|\d{2}SEP|\d{2}OCT|\d{2}NOV|\d{2}DEC)"