Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中提取特殊字符(“|”)后的前四个字符_Excel_Vba - Fatal编程技术网

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

在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

我在一个单元格中有以下内容

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|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等等。。。