寻找一种根据单元格中的最后五个数字拆分 excel 中的单元格的方法

Looking for a way to split cells in excel based the last five numbers in a cell

我正在寻找一种方法来修复表示 Excel 中地址的混合数据集。

这是一个示例数据集。

Kirchgasse 2389179 Beimerstetten

所有这些应该会产生三个数据集。

A1 = Kirchgasse 2389179 Beimerstetten
A2 = Kirchgasse 23
A3 = 89179
A4 = Beimerstetten

模式是,A3 始终是数据集中的最后 5 个数字。

我完全迷失在这里,因为 Excel 通常不是我选择的武器。

Kirchgasse 2389179 Beimerstetten 放入 A1 单元格,并使用下面的 VBA 代码将 D1 单元格的值设置为最后 5 个数字

Sub Test_Pattern()
    
    Dim stringOne   As String
    Dim regexOne    As Object
    
    Set regexOne = New RegExp
    
    regexOne.Pattern = "(\d{5})(?!.*\d)"
    regexOne.Global = TRUE
    regexOne.IgnoreCase = IgnoreCase
    stringOne = Range("A1").Value
    
    Set theMatches = regexOne.Execute(stringOne)
    
    For Each Match In theMatches
        Range("D1").Value = Match.Value
    Next
    
End Sub

要了解如何在 VBA 中使用正则表达式,请参阅此 ref

A2中,公式复制下来:

=TRIM(SUBSTITUTE(MID(SUBSTITUTE(" "&REPLACE(REPLACE(A,AGGREGATE(14,6,FIND(ROW(:)-1,A,COLUMN(A:Z)),1)-4,0," "),FIND(" ",A),1,"@")," ",REPT(" ",50)),ROW($A1)*50,50),"@"," "))

你也可以使用Excel公式来拆分单元格,Excel给了我们充分的机会使用这些功能,有很多方法对于要解决的查询,您可以按照以下任何一种方法来完成所需的输出

从单元格 A1 中提取第一部分,公式在单元格 A2 中使用

=LEFT($A1,FIND(" ",$A1)+2)

要从单元格 A1 中提取第二部分,单元格 A3 中使用的公式

=LEFT(REPLACE($A1,1,LEN($A2),""),5)

从单元格 A1 中提取字符串的最后一部分,公式在单元格 A4 中使用

=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",100)),100))

但是要提取 5 个数字,您也可以使用以下任何一种适合您的 Excel 版本

单元格 A11 中显示的公式

=MAX(IFERROR(MID($A,ROW(INDIRECT("1:"&LEN($A))),5)*1,""))

单元格 A13 中显示的公式

=LARGE(IFERROR(--MID($A1,SEQUENCE(LEN($A1)),COLUMN($A:$E)),0),1)

单元格 A15 中显示的公式

=AGGREGATE(14,6,IFERROR(--MID($A1,ROW(:000),COLUMN($A:$E)),0),1)

单元格 A17 中显示的公式

=--RIGHT(FILTERXML("<p><w>"&SUBSTITUTE($A1," ","</w><w>")&"</w></p>","//w[.*0=0]"),5)

要了解FILTERXML函数的详细知识,您可以参考下面的link,由JvdV Sir

编写

还有几种方法

单元格 A2 中使用的公式

=SUBSTITUTE(TRIM(FILTERXML("<p><w>"&SUBSTITUTE(SUBSTITUTE(LEFT($A1,FIND(" ",$A1)+2)&REPLACE($A1,1,FIND(" ",$A1)+2," ")," ","@",1)," ","</w><w>")&"</w></p>","//w")),"@"," ")

只要在A2单元格输入公式,如果你用的是O365或者Excel2021

就会溢出

如果你没有使用上面的 Excel 版本那么你可以试试这个并填写公式

单元格 B2 中使用的公式并向下填充

=SUBSTITUTE(TRIM(FILTERXML("<p><w>"&SUBSTITUTE(SUBSTITUTE(LEFT($A,FIND(" ",$A)+2)&REPLACE($A,1,FIND(" ",$A)+2," ")," ","@",1)," ","</w><w>")&"</w></p>","//w["&ROW(A1)&"]")),"@"," ")