VBA实现比较

Sub check_Click()

    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim r1 As Range, r2 As Range
    Dim i As Long, j As Long
    Dim diffCount As Long
    Dim maxRows As Long, maxCols As Long

    ' 设置要比较的两个工作表
    Set ws1 = Worksheets("Sheet1")
    Set ws2 = Worksheets("Sheet2")

    ' 设置要比较的范围
    Set r1 = ws1.UsedRange
    Set r2 = ws2.UsedRange

    ' 初始化差异计数器
    diffCount = 0

    ' 计算最大行数和列数
    maxRows = Application.WorksheetFunction.Max(r1.Rows.Count, r2.Rows.Count)
    maxCols = Application.WorksheetFunction.Max(r1.Columns.Count, r2.Columns.Count)

    ' 为两个工作表添加新列以记录差异计数
    ws1.Cells(1, maxCols + 1).Value = "Difference Count"
    ws2.Cells(1, maxCols + 1).Value = "Difference Count"

    ' 遍历两个工作表中的单元格
    For i = 1 To maxRows
        For j = 1 To maxCols
        
        ' 比较单元格内容之前,将数值单元格转换为字符串
            Dim cellValue1 As String, cellValue2 As String
            cellValue1 = CStr(r1.Cells(i, j).Value)
            cellValue2 = CStr(r2.Cells(i, j).Value)

            ' 如果单元格内容不同,用颜色标记并更新差异计数
            If r1.Cells(i, j).Value <> r2.Cells(i, j).Value Then
                r1.Cells(i, j).Interior.Color = RGB(255, 192, 203)
                r2.Cells(i, j).Interior.Color = RGB(0, 255, 127)
                diffCount = diffCount + 1

                ' 更新该行的差异计数
                ws1.Cells(i, maxCols + 1).Value = ws1.Cells(i, maxCols + 1).Value + 1
                ws2.Cells(i, maxCols + 1).Value = ws2.Cells(i, maxCols + 1).Value + 1
            End If
        Next j
    Next i

    ' 显示差异总数
    MsgBox diffCount & " differences found.", vbInformation

End Sub

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值