在excel中提取特殊字符(“|”)后的前四个字符
我在一个单元格中有以下内容 0001 abc | 0002极端规模| 0003基础设施部第| 0004号集成组件 我只想提取数字(00010002等)。有人能帮忙吗在excel中提取特殊字符(“|”)后的前四个字符,excel,vba,Excel,Vba,我在一个单元格中有以下内容 0001 abc | 0002极端规模| 0003基础设施部第| 0004号集成组件 我只想提取数字(00010002等)。有人能帮忙吗 提前感谢。以下代码将把所有数字从A1开始写到A列的单元格底部: Sub NextTest() Dim i As Integer Dim tmpArr As Variant Dim strTxt As String strTxt = "0001 abc|0002 eXtreme Scale|0
提前感谢。以下代码将把所有数字从
A1
开始写到A列的单元格底部:
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
以下代码将从
A1
到底部将所有数字写入A列中的单元格:
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
您可以在字符串上循环
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
或者你可以使用正则表达式
Dim strSearchRegex = "(?:^|\|)(\d{4})"
或者@KazimierzJawor的解决方案,更简单:)您可以在字符串上循环
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
或者你可以使用正则表达式
Dim strSearchRegex = "(?:^|\|)(\d{4})"
或者@KazimierzJawor的解决方案,它更简单:)创建一个可以以多种方式使用的函数 插入模块并键入(复制/粘贴): 在Excel中,如果A1包含
0001 abc | 0002极端规模| 0003基础设施部门编号| 0004集成组件
,则可以在A2中键入
=PipeNumberExtractor(A1)
你会得到
0001,0002,0003,0004
创建一个可以以多种方式使用的函数 插入模块并键入(复制/粘贴): 在Excel中,如果A1包含
0001 abc | 0002极端规模| 0003基础设施部门编号| 0004集成组件
,则可以在A2中键入
=PipeNumberExtractor(A1)
你会得到
0001,0002,0003,0004
此函数的目的是从字符串中创建一个逗号分隔的数字列表。要将每个数字放在单独的一行中,请参阅本线程中的两个其他答案。我在一行中有多行:0033 Kunparkal 0640 Portalrammeverk 1289 eXtreme Scale 0679 Autentsering/Tilgangskontroll 0823 DnB NOR API,Webservice 0947集成组件4577 Felix Kunde 4612中央基础设施Felix 0032 DnB IntegrationsJon 0022 NETS 0311 SETA如何将这些线路拆分为多行?整个字符串是否
0033 Kunparkal 0640 Portalrammeverk。。。0311 SETA
在单个细胞中,如A1
?如果是,您是否希望输出如下:0033 kunparkal
进入B1
,0640 Portalrammeverk
进入B2
等。是的..您是对的..我需要B1中的0033 kunparkal输出,0640 B2中的Portalrammeverk等…此函数的目的是从字符串中创建一个逗号分隔的数字列表。要将每个数字放在单独的一行中,请参阅本线程中的两个其他答案。我在一行中有多行:0033 Kunparkal 0640 Portalrammeverk 1289 eXtreme Scale 0679 Autentsering/Tilgangskontroll 0823 DnB NOR API,Webservice 0947集成组件4577 Felix Kunde 4612中央基础设施Felix 0032 DnB IntegrationsJon 0022 NETS 0311 SETA如何将这些线路拆分为多行?整个字符串是否0033 Kunparkal 0640 Portalrammeverk。。。0311 SETA
在单个细胞中,如A1
?如果是,您是否希望输出如下:0033 kunparkal
进入B1
,0640 Portalrammeverk
进入B2
等。是的..您是对的..我需要输出0033 kunparkal进入B1,0640 Portalrammeverk进入B2等等。。。