我如何在vba中找到一个或多个字符串

时间:2014-07-01 18:12:20

标签: vba excel-vba excel

如何在范围内找到一个或多个字符串并复制到另一个工作表或工作表2。我知道我必须使用find方法,但我认为我没有正确使用它。是什么意思找到一个字符串是" ra01"当我发现ra01复制它并将其粘贴到sheet2中但每当我循环通过我的范围时,它都找不到任何东西,这就是我到目前为止所做的事情,所以如果any1知道该怎么做,请帮助我,这就是如何我的范围看起来像我不能发布任何图像因为我没有得到积分,但我希望你理解我的问题。                  10Y_RAN_ra01_CC
                0Y_RAN_ra01_xx
                10Y_RAN_ra01_CC
               1X_RAN_ra01_XB
               ZZ_RAX_ra01_ZZ
               1Y_MMN_ra01_NN
               Y_RAN_ra01_ZZ
                10Y_RAN_ra01_CC

    sub find()
    dim x as string, i as long, lastrow as long, y as long
    x = "ra01"
    y =2
    lastrow = Sheets("Sheet1").UsedRange.Rows.Count + 1
    for i = 2 to lastrow
    if sheets("Sheet1").Cells(i, 1 ).find.value= x then
    Sheets("Sheet2").Range("A" & y) = sheets("Sheet1").Cells(i, 1 )
    y = y + 1
    end if 
    next i


   end sub() 

1 个答案:

答案 0 :(得分:0)

根据合格的猜测回答你的问题(有点不清楚):

  1. 为了使用VBA在另一个字符串(例如“GHKABCRT”)中找到子字符串(例如“ABC”),您可以应用Instr("GHKABCRT", "ABC")函数,该函数返回子字符串的位置(在这种情况下,4)。

  2. 为了在Excel工作表中查找子字符串,您可以使用工作表函数Match(),它基本上也是这样做的,返回相对位置(更多细节见http://msdn.microsoft.com/en-us/library/office/ff835873%28v=office.15%29.aspx)< / p>

  3. 在您的特定情况下,您甚至不需要这些功能(Find()函数都没有):只需更正语法错误,如下所示:

        Sub find()
    
        Dim x As String, i As Long, lastrow As Long, y As Long
        x = "ra01"
        y = 2
    
        lastrow = Sheets("Sheet1").UsedRange.Rows.Count + 1
    
        For i = 2 To lastrow
            If Sheets("Sheet1").Cells(i, 1).Value = x Then
                Sheets("Sheet2").Range("A" & y) = Sheets("Sheet1").Cells(i, 1)
                y = y + 1
            End If
        Next i
    
       End Sub
    

    希望这会有所帮助。 的问候,