匹配不同工作表的2列中的字符串并复制它

时间:2015-03-08 22:18:37

标签: string excel vba excel-vba match

我对VBA很新,所以需要帮助......请帮助我专家..

我在B栏第1栏中有数据,就像这样 - 123alina09032015& 我在第A栏第2页中有数据,就像这样 - alina。

数据庞大,每个月都在不断增加。所以我想要的是一个VBA代码,用于匹配A列表2和b列表1中的单词,并将其粘贴到表1的c列中的相邻单元格

我有一个代码,但只找到完全匹配并将其粘贴到工作表1中的c列。以下是代码:

Sub CopyBasedonSheet1()

Dim i As Long
Dim j As Long
Sheet1LastRow = Worksheets("sheet1").Range("B" & Rows.Count).End(xlUp).Row
Sheet2LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row


For j = 1 To Sheet1LastRow
    For i = 1 To Sheet2LastRow
        If Worksheets("sheet1").Cells(j, 1).Value = Worksheets("sheet2").Cells(i, 4).Value Then
            Worksheets("sheet1").Cells(j, 3).Value = Worksheets("sheet2").Cells(i, 1).Value
        Else
        End If
    Next i
Next j
End Sub

期待您的回答

1 个答案:

答案 0 :(得分:0)

工作表函数=Find("abc","123abc456")将在“123abcdef”字符串中返回“abc”的起始位置,在这种情况下为4。如果第二个字符串不包含第一个字符串,则返回#Value错误。可以使用=IsErr(A1)函数检查。如果你在表格上这样做的话就是这样。

要在代码中执行类似操作,如果在输入的FIRST单元格中找到SECOND单元格中的值,则= InStr(.cells(a,b), .cells(c,d))将返回相同的4(因此,工作表“查找”功能中的参数的顺序相反)。但是,如果在另一个内部找不到一个字符串,VBA函数不会生成错误,而是产生零结果。

听起来OP关心的是一个字符串包含另一个字符串,但不完全不知道字符串中另一个字符串的位置。因此,不是测试单元格是否相等,请检查是否InStr(worksheet().cell(), worksheet().cell()) > 0。如果为true,则在另一个值中找到一个值,您可以按照书写的那样执行Then...