regex - 如何从Excel单元格中仅提取5位数字的字符串?

标签 regex excel string vba extract

我有一堆数据,其中包含任意数量的格式完全不一致的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/FINDMINLEFT/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
<小时/>

enter image description here

关于regex - 如何从Excel单元格中仅提取5位数字的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43655468/

相关文章:

sql - 使用SQL获取未知字符串的模式?

excel - Excel 中的用户定义函数和速度问题

excel - VBA 宏 : Using variables with type modifier

vba - Excel/VBA 最后一行/列

C++ 检索字符串的一部分

javascript - 用正则表达式替换我不优雅的代码

java - 如何在字母和数字之间(或在数字和字母之间)拆分字符串?

c++ - 本地覆盖字符串提取运算符

javascript - 如何测试有效的 UUID/GUID?

java - 从字符串中删除字母