excel之两个sheet对比

操作前

excel之两个sheet对比_第1张图片
操作前1
excel之两个sheet对比_第2张图片
操作前2

理想效果

excel之两个sheet对比_第3张图片
理想效果1
excel之两个sheet对比_第4张图片
理想效果2

宏代码


Sub 对比两个sheet()
'
' 对比两个sheet,查出同一列哪些值是相同的,哪些是新增的
'
For i = 2 To Sheet1.UsedRange.Rows.Count
    For j = 2 To Sheet2.UsedRange.Rows.Count
        If (Sheet1.Cells(i, 1).Value = Sheet2.Cells(j, 1).Value) Then
         
            Sheet1.Cells(i, 2).Value = "是"
        End If
    Next
Next

For j = 2 To Sheet2.UsedRange.Rows.Count
    For i = 2 To Sheet1.UsedRange.Rows.Count
        If (Sheet1.Cells(i, 1).Value = Sheet2.Cells(j, 1).Value) Then
         
            Sheet2.Cells(j, 2).Value = "否"
        End If
    Next
Next

End Sub

相关注释

从第二行开始对比
For i = 2 To Sheet1.UsedRange.Rows.Count For j = 2 To Sheet2.UsedRange.Rows.Count
对比第一列值
If (Sheet1.Cells(i, 1).Value = Sheet2.Cells(j, 1).Value)
相同则设置sheet1的第二列值为是
Sheet1.Cells(i, 2).Value = "是"


扩展

我们可以在第二列设置初值,比方说sheet1第二列设置初值为否,那么我们运行宏之后,整个就填写完毕了,效果就是这样的

excel之两个sheet对比_第5张图片
设置初值

另外我们也可以对比同时对比多列,如同时对比2,3,4列,我们可以这样写if语句


  If (Sheet1.Cells(i, 2).Value = Sheet2.Cells(j, 2).Value ) And (Sheet1.Cells(i, 3).Value = Sheet2.Cells(j, 3).Value ) And (Sheet1.Cells(i, 4).Value  = Sheet2.Cells(j, 4).Value ) Then
         
            Sheet1.Cells(i, 5).Value = "是"

更多扩展请结合自己的实际情况

你可能感兴趣的:(excel之两个sheet对比)