在2个工作表中匹配2列并填写信息

时间:2015-04-11 12:12:06

标签: vb.net excel vba

我有2个工作表

在工作表1中,我有一堆信息,但在H列中我有数字

我也有工作表2,在这张表中,我有2列

我想将工作表1中的H列与工作表2中的A列进行比较,如果两个数字匹配,我想从sheet2中的B列中提取数据并将其粘贴到同一行的列I中数据匹配列H

如果这有任何意义,我不太确定如何在VBA中这样做,因为我的技能严重缺乏这种语言。任何帮助将不胜感激,特别是有一个解释,但生病了,我可以得到任何帮助。

我知道这可以通过vlookup来完成,但我正在尝试创建一个vba宏

1 个答案:

答案 0 :(得分:0)

您真的不需要VBA宏来执行此操作。在第I列中,这个简单的公式将起作用:=IF(H7=Sheet2!A7,Sheet2!B7,"")。但是如果你想要一个宏出于其他原因,只需设置你的范围并比较如下:

Option Explicit

Sub CompareAndCopy()
    Dim col1 As Range
    Dim col2 As Range
    Dim col3 As Range
    Dim i As Integer

    '--- assumes data in each cell with no empty cells
    Set col1 = Sheets("Sheet1").Range("H1", Range("H1").End(xlDown))
    Set col2 = Sheets("Sheet2").Range("A1")
    Set col3 = Sheets("Sheet1").Range("I1")

    '--- assumes empty cells in column and selects down to the last data cell
    'Set col1 = Sheets("Sheet1").Range("H1", Range("H1048576").End(xlUp))
    'Set col2 = Sheets("Sheet2").Range("A1")
    'Set col3 = Sheets("Sheet1").Range("I1")

    For i = 1 To col1.Rows.Count
        If col1.Cells(i, 1).Value = col2.Cells(i, 1).Value Then
            col3.Cells(i, 1).Value = col2.Cells(i, 2).Value
        End If
    Next i
End Sub