我有一堆数据,其中包含任意数量的格式完全不一致的5位字符串,我想提取这些5位字符串(以粗体显示)。我不关心包含少于或多于 5 位数字的字符串。例如,这就是我的文件中的数据类型
Cell A1: "1. 76589 - wholesale activities. 2. 33476 - general"
Cell A2: "WHOLESALE ACTIVITIES (76589). SHIPPING (12235). REAL ESTATE ACTIVITIES (67333)"
Cell A3: "1. 33476 General. 658709 annual road. Unknown 563"
我尝试过常用的 SEARCH/FIND
、MIN
、LEFT/RIGHT/MID
功能,但不确定如何获取他们产生我需要的结果,甚至文本到列也没有给我一个干净的结果
提前致谢
最佳答案
这是一个宏,可以根据您的要求将行拆分为列。
正在处理的范围是您选择的范围。 结果写入同一行的相邻列中。
根据您的工作表设置,您可能需要在执行提取代码之前“清除”结果所在的行。
您还可以编写代码来选择要自动处理的数据。这个论坛上有很多例子。
<小时/>Option Explicit
Sub Extract5Digits()
Dim R As Range, C As Range
Dim RE As Object, MC As Object, M As Object
Dim I As Long
Set R = Selection
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.Pattern = "\b\d{5}\b"
For Each C In R
If .test(C.Text) = True Then
I = 0
Set MC = .Execute(C.Text)
For Each M In MC
I = I + 1
C.Offset(0, I) = M
Next M
End If
Next C
End With
End Sub
<小时/>
关于regex - 如何从Excel单元格中仅提取5位数字的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43655468/