Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
vba在找到文本后复制文本_Vba_Excel - Fatal编程技术网

vba在找到文本后复制文本

vba在找到文本后复制文本,vba,excel,Vba,Excel,帮助我在下面的代码中添加循环。到目前为止,代码只复制单元格“26002354”中文本的第一个匹配项。我希望它复制一个单元格中的所有匹配项,然后再下一个单元格 假设-在文本中,我有树匹配(所有文本在一个单元格中): 26002354 26008541 26009841 所有这些我都需要在右边排成一行 Sub extract() Dim r As Long, dashpos As Long, m As Long Dim ws As Worksheet Set ws = Wo

帮助我在下面的代码中添加循环。到目前为止,代码只复制单元格“26002354”中文本的第一个匹配项。我希望它复制一个单元格中的所有匹配项,然后再下一个单元格

假设-在文本中,我有树匹配(所有文本在一个单元格中): 26002354 26008541 26009841

所有这些我都需要在右边排成一行

Sub extract()
    Dim r As Long, dashpos As Long, m As Long
    Dim ws As Worksheet

    Set ws = Worksheets("Sheet1")
    m = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    For r = 2 To m
        dashpos = InStr(1, Cells(r, 1), "2600")
        Cells(r, 2).Value = Mid(Cells(r, 1), dashpos, 14)
        Cells(r, 3).Value = Mid(Cells(r, 1), dashpos, 14)
        Cells(r, 4).Value = Mid(Cells(r, 1), dashpos, 14)
    Next
End Sub

您的预期结果有点不清楚,但要从包含“26002354 26008541 26009841”的a列中获得B:D列中的三个8位数字,请使用拆分

Sub extract()
    Dim r As Long

    with Worksheets("Sheet1")
       For r = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
           .Cells(r, 2).resize(1, 3) = split(Cells(r, 1).value2, chr(32))
       Next
    end with
End Sub

我不明白。。。如果您想要完整的文本,那么为什么要使用
Mid
?还是我只是弄错了。。?只是张贴一个你的预期结果的模型请。。。这样就不那么容易混淆了拆分空格上的单元格值以获得三个部分(并限定单元格的父级)。由于要拆分为下三列,因此也可以使用TextToColumns。很抱歉混淆了。[1] :以下是预期结果的示例。我只想在文本中提取那些从“2600”(整个bumber看起来像26003400699010)开始的单词和数字,然后复制到右边的一行。正确的图片