VBA循环遍历两个excel列中的值
我正在尝试遍历两个excel列,并确定第一列中的值是否存在于第二列中。我对VBA编程相当陌生,有一段时间没有编程了 我的代码,当我通过F8运行它时,如果它找到一个值,它将写入“匹配”,但它将继续循环,并最终将其重写为“不匹配”。你能告诉我怎么修理这个吗 多谢各位VBA循环遍历两个excel列中的值,vba,excel,Vba,Excel,我正在尝试遍历两个excel列,并确定第一列中的值是否存在于第二列中。我对VBA编程相当陌生,有一段时间没有编程了 我的代码,当我通过F8运行它时,如果它找到一个值,它将写入“匹配”,但它将继续循环,并最终将其重写为“不匹配”。你能告诉我怎么修理这个吗 多谢各位 只需在匹配后添加退出即可 如下图所示: If act2 = act1 Then dbsheet2.Cells(y, 3).Value = "Match" Exit For Else 试试这个: 修改If-Else,如
只需在匹配后添加退出即可 如下图所示:
If act2 = act1 Then
dbsheet2.Cells(y, 3).Value = "Match"
Exit For
Else
试试这个:
修改If-Else,如下所示
If Not dbsheet2.Cells(y, 3).Value = "Match" Then
'Only compare if previoulsy not done or resulted in "No match"
If act2 = act1 Then
dbsheet2.Cells(y, 3).Value = "Match"
Else
dbsheet2.Cells(y, 3).Value = "No match"
End If
End If
很好,你想出了一些代码。有很多更简单的方法,如果你愿意,你可以使用 方法1: 如果数据位于A列和B列,请在C列中输入以下公式并向下拖动
=IF(IFERROR(MATCH(A1,B:B,0),FALSE),"Match","No Match")
此公式将A列中的值与B列中的值匹配,并根据真/假进行打印
方法2:
在VBA中使用Match
公式,而不是运行两个不同的循环,如果行数更多,这可能会占用更多的时间
下面的代码也提供了类似的输出
Sub match()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If IsError(Application.match(Cells(i, 1), Range("B:B"), 0)) Then
Cells(i, 3) = "No Match"
Else
Cells(i, 3) = "Match"
End If
Next i
End Sub
您是否打算在两张不同的表格中比较A列?为什么不在C列中使用此选项<代码>如果(ISNUMBER(MATCH(B2,$A$2:$A$16,0)),“MATCH”,“No MATCH”)是的,我在比较两个不同表中的列您的代码只是比较同一行中的值,而不是如果左列中的值出现在右列中的任何位置。。。。无论如何,这将非常有用:)@Mr.Riply匹配公式将一个单元格中的值与另一列中的所有值进行比较。也许你可以试一试
Sub match()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If IsError(Application.match(Cells(i, 1), Range("B:B"), 0)) Then
Cells(i, 3) = "No Match"
Else
Cells(i, 3) = "Match"
End If
Next i
End Sub