在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