在VBA中比较不同工作表中的2个单元格(Excel 2010)

时间:2014-05-09 18:35:53

标签: excel vba excel-vba

您好我可以要求一个示例宏代码来比较2个不同工作表中的2个不同列。

这里是sheet1中的columnA

enter image description here

这里是sheet2中的A列 enter image description here

这是我需要在sheet1中作为输出做的事情

enter image description here

然后,如下图所示,A列中没有红色匹配的单元格中的所有单元格应该被剪切并复制到Sheet1中的C列中,如下所示 enter image description here

最后,A列表2中没有匹配的所有单元格也应该被剪切并粘贴到表格1中的列D中,例如ABC:PINK,ABC:VIOLET和ABC:BLACK,如下所示

enter image description here

感谢您的帮助。

这是我到目前为止所得到的

Sub Button1_Click()
On Error GoTo ErrorHndler:
Dim myRange As Range
Dim sRng As Range

Set myRange = Range("A1:A50")

Start:
     For Each sRng In myRange
       If sRng Like Sheets("Sheet2").Range("A1").Value Then
          MsgBox (Sheets("Sheet2").Range("A1").Value) <----it does not pass here 
          (----I have no Idea what to put here-----)
          'GoTo NextCell
       Else
          'GoTo Start
          MsgBox (Sheets("Sheet2").Range("A1").Value)
          'MsgBox "Doesn't match"  <-----for debugging purposes
       End If
 NextCell:
 Next sRng

 ErrorHandler:
 MsgBox ""
 End Sub

1 个答案:

答案 0 :(得分:4)

您可以使用Range.Find

在某个范围内搜索某个值 如果找不到匹配项,

Range.Find 会返回 Nothing ;如果找到匹配项,则返回范围

您可以使用运算符检查两个对象是否引用同一个对象。

以下是一个例子:

Sub lookup()
    Dim TotalRows As Long
    Dim rng As Range
    Dim i As Long

    'Copy lookup values from sheet1 to sheet3
    Sheets("Sheet1").Select
    TotalRows = ActiveSheet.UsedRange.Rows.Count
    Range("A1:A" & TotalRows).Copy Destination:=Sheets("Sheet3").Range("A1")

    'Go to the destination sheet
    Sheets("Sheet3").Select

    For i = 1 To TotalRows
        'Search for the value on sheet2
        Set rng = Sheets("Sheet2").UsedRange.Find(Cells(i, 1).Value)
        'If it is found put its value on the destination sheet
        If Not rng Is Nothing Then
            Cells(i, 2).Value = rng.Value
        End If
    Next
End Sub