在excel中的特殊字符(“|”)之后提取前四个字符

我有一个单元格中的下面的内容

0001 abc | 0002 eXtreme Scale | 0003基础设施部门 编号| 0004集成组件

我只想提取数字(0001,0002等)。 任何人都可以帮忙吗?

提前致谢。

下面的代码将所有数字写入列A中的单元格,从A1开始到底部:

 Sub NextTest() Dim i As Integer Dim tmpArr As Variant Dim strTxt As String strTxt = "0001 abc|0002 eXtreme Scale|0003 Infrastructure dept. no.|0004 Integration Components" tmpArr = Split(strTxt, "|") For i = 1 To UBound(tmpArr) Cells(i, "A") = "'" & Left(tmpArr(i - 1), 4) Next i End Sub 

你可以循环你的string

 Dim strNumbers = left(cellcontent, 4) Dim nPipeLoc = InStr(5, cellcontent, "|", Text) While ( nPipeLoc > 0) strNumbers = strNumbers & "," & Mid(cellcontent, nPipeLoc, 4) nPipeLoc = InStr(nPipeLoc + 1, cellcontent, "|", Text) End While 

或者您可以使用RegEx

 Dim strSearchRegex = "(?:^|\|)(\d{4})" 

或@KazimierzJawor的解决scheme,这是更简单:)

创build一个可以以多种方式使用的函数。

插入一个模块并键入(复制/粘贴)在:

 Public Function PipeNumberExtractor(CellValue As String) As String Dim PipeSplit() As String PipeSplit = Split(CellValue, "|") Dim PipeSplitItem As Variant Dim SpaceSplit() As String For Each PipeSplitItem In PipeSplit SpaceSplit = Split(PipeSplitItem, " ") If UBound(SpaceSplit) >= 0 Then PipeNumberExtractor = PipeNumberExtractor & "," & SpaceSplit(0) End If Next PipeSplitItem If Len(PipeNumberExtractor) > 0 Then PipeNumberExtractor = Mid(PipeNumberExtractor, 2) End If End Function ' To test the function, let's do this Sub Test() Debug.Print PipeNumberExtractor("0001 abc|0002 eXtreme Scale|0003 Infrastructure dept. no.|0004 Integration Components") End Sub 

在Excel中,如果A1包含0001 abc|0002 eXtreme Scale|0003 Infrastructure dept. no.|0004 Integration Components 0001 abc|0002 eXtreme Scale|0003 Infrastructure dept. no.|0004 Integration Components ,在A2中可以input

 =PipeNumberExtractor(A1) 

你会得到的

 0001,0002,0003,0004