您好我可以要求一个示例宏代码来比较2个不同工作表中的2个不同列。
这里是sheet1中的columnA
这里是sheet2中的A列
这是我需要在sheet1中作为输出做的事情
然后,如下图所示,A列中没有红色匹配的单元格中的所有单元格应该被剪切并复制到Sheet1中的C列中,如下所示
最后,A列表2中没有匹配的所有单元格也应该被剪切并粘贴到表格1中的列D中,例如ABC:PINK,ABC:VIOLET和ABC:BLACK,如下所示
感谢您的帮助。
这是我到目前为止所得到的
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
答案 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