我在单元格中有以下内容
0001 abc | 0002 eXtreme Scale | 0003基础设施部。 no。| 0004集成组件
我想只提取数字(0001,0002等)。有人可以帮忙吗?
提前致谢。
答案 0 :(得分:2)
以下代码会将所有数字写入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
答案 1 :(得分:2)
您可以循环播放字符串
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的解决方案,这更简单:)
答案 2 :(得分:0)
创建一个可以多种方式使用的功能。
插入模块并输入(复制/粘贴)此内容:
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
,则在A2中您可以键入
=PipeNumberExtractor(A1)
你会得到
0001,0002,0003,0004