[英]Use macro to compare column in two Excel worksheets and add matches to third sheet
[英]Compare two EXCEL worksheets and copy similar data onto a third sheet
我写了一个vba代码,可以比较两个EXCEL工作表并将相似的行粘贴到第三工作表。 这里是:
'Same data
'If condition met, copy cells
j = 2
For i = 2 To OLast_row
IsEqual = False
For j = 2 To NLast_row
If OWS.Cells(i, 1).Value = NWS.Cells(j, 1).Value Then
For Z = 2 To OLast_clmn
If OWS.Cells(i, Z).Value = NWS.Cells(j, Z).Value Then
IsEqual = True
Else
IsEqual = False
End If
Next
If IsEqual = True Then
cnt = cnt + 1
CompareWS.Cells(cnt, 1).Value = same
For D = 1 To OLast_clmn
OWS.Cells(i, D).Copy CompareWS.Cells(cnt, D + 1)
Next
End If
Else
Next
Next
Sheet1是较早声明的“ OWS”,Sheet2是较早声明的“ NWS”,Sheet2是较早声明的“ CompareWS”
问题是,此代码停止比较单元格1级别的单元格; 例如,如果两行(每个工作表中的每一行)以相同的数据开头,则基于该单元格,程序将把两行视为相同,即使其余数据不匹配也是如此。
我怀疑“ For Z ...”的条件没有超出应有的范围,但不知道如何修复它。
旧数据示例: OldData
新数据示例: NewData
基于这些数据,ComparedData会是什么样子: ComparedData
希望这会有所帮助
预先感谢您对此发表看法。
最好。
感谢@Mark Balhoff:我会这样尝试
j = 2
For i = 2 To OLast_row
IsEqual = False
For j = 2 To NLast_row
isequal=true
For Z = 1 To OLast_clmn
If OWS.Cells(i, Z).Value <> NWS.Cells(j, Z).Value Then
IsEqual = False
exit for
End If
Next
If IsEqual = True Then
' copy cells
End If
Next
Next
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.