我试图比较两张纸,即sheet1和sheet2,并在sheet3中打印值。当我在sheet1和sheet2之间进行比较并寻找不匹配的数字时,不知何故,我的循环没有停止,并且很多时间它打印了相同的数字。这是我的代码,但是还有其他方法可以在两张纸之间找到不匹配的数字并将其粘贴到sheet3中。
lastrow1 = Sheets("Sheet1").UsedRange.Row - 1 + Sheets("Sheet1").UsedRange.Rows.Count
lastrow2 = Sheets("Sheet2").UsedRange.Row - 1 + Sheets("Sheet2").UsedRange.Rows.Count
a = 1
b = 1
c = 1
For i = a To lastrow1
For ii = b To lastrow2
If Worksheets("Sheet1").Cells(i, 1) <> Worksheets("Sheet2").Cells(ii, 1) Then
Worksheets("Sheet3").Range("A" & x) = Worksheets("Sheet1").Cells(i, 1)
x = x + 1
End If
Next ii
Next i
注意:下面的代码将Sheet1中的A列与Sheet2中的A列进行检查。然后,Main()
以相反的顺序调用相同的代码,以便对照Sheet1的A列检查A列中Sheet2中的所有数字。如果您只想查看Sheet1中但不在Sheet2中的值,请注释掉对PrintNonMatching
in的第二次调用Main()
Sub Main()
PrintNonMatching "Sheet1", "Sheet2", "Sheet3"
PrintNonMatching "Sheet2", "Sheet1", "Sheet3"
End Sub
Sub PrintNonMatching(arg1 As String, arg2 As String, arg3 As String)
Dim sh1 As Worksheet, sh2 As Worksheet, sh3 As Worksheet
Set sh1 = Sheets(arg1): Set sh2 = Sheets(arg2): Set sh3 = Sheets(arg3)
Dim match As Boolean
For Each c1 In sh1.Range("A1:A" & sh1.Range("A" & Rows.Count).End(xlUp).Row)
For Each c2 In sh2.Range("A1:A" & sh2.Range("A" & Rows.Count).End(xlUp).Row)
If c1 = c2 Then match = True
Next
If Not match Then
sh3.Range("A" & sh3.Range("A" & Rows.Count).End(xlUp).Row + 1) = c1
End If
match = False
Next
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句