Vba Excel VB宏,用于比较工作表并将结果输出到其他工作表

Vba Excel VB宏,用于比较工作表并将结果输出到其他工作表,vba,excel,Vba,Excel,我在这里使用宏:突出显示差异。然而,当有50000行时,其中只有2行是不同的,这是一个大海捞针的问题 我想做的是在一张单独的表格中看到差异,并将更改前后并排显示。在此方面的任何帮助都将不胜感激。对现有代码的少量添加: Sub Compare_Sheets() Dim v1,v2 Dim diffRow as long Set From_WS = Workbooks("Book1").Worksheets("Sheet1") Set To_WS = Workbooks("Book2").Wor

我在这里使用宏:突出显示差异。然而,当有50000行时,其中只有2行是不同的,这是一个大海捞针的问题


我想做的是在一张单独的表格中看到差异,并将更改前后并排显示。在此方面的任何帮助都将不胜感激。

对现有代码的少量添加:

Sub Compare_Sheets()

Dim v1,v2
Dim diffRow as long

Set From_WS = Workbooks("Book1").Worksheets("Sheet1")
Set To_WS = Workbooks("Book2").Worksheets("Sheet2")
Set diffWS = Thisworkbook.Sheets("Diff")

diffRow = 1

With From_WS.Cells(1, 1).CurrentRegion
    Total_Rows = .Rows.Count
    Total_Columns = .Columns.Count
End With

For Rows_Counter = 1 To Total_Rows
For Column_Counter = 1 To Total_Columns
v1 = Trim(LCase(From_WS.Cells(Rows_Counter, Column_Counter).Value))
v2 = Trim(LCase(To_WS.Cells(Rows_Counter, Column_Counter).Value)) 

If v1 <> v2 Then
    From_WS.Cells(Rows_Counter, Column_Counter).Interior.ColorIndex = 4
    To_WS.Cells(Rows_Counter, Column_Counter).Interior.ColorIndex = 5

    With diffWS.Rows(diffRow)
        .Cells(1).value=From_WS.Cells(Rows_Counter, Column_Counter).Address()
        .Cells(2).value = v1
        .Cells(3).value= v2
        diffRow = diffRow + 1
    End With

End If

Next Column_Counter
Next Rows_Counter

End Sub
子比较表()
尺寸v1、v2
长得一样
设置自\u WS=工作簿(“Book1”)。工作表(“Sheet1”)
设置为_WS=工作簿(“Book2”)。工作表(“Sheet2”)
Set diffWS=thiswoolk.Sheets(“Diff”)
衍射波=1
使用From_WS.Cells(1,1).CurrentRegion
总行数=.Rows.Count
总列数=.Columns.Count
以
对于行,计数器=1到行总数
对于列\u计数器=1到总\u列
v1=修剪(LCase(来自单元格(行计数器、列计数器).Value))
v2=修剪(LCase(到单元格(行计数器、列计数器).Value))
如果v1 v2那么
来自单元格(行计数器、列计数器)。Interior.ColorIndex=4
到w.Cells(行计数器、列计数器)。Interior.ColorIndex=5
使用diffWS.Rows(diffRow)
.Cells(1).value=From_WS.Cells(行计数器、列计数器).Address()
.单元格(2).值=v1
.单元格(3).值=v2
衍射流=衍射流+1
以
如果结束
下一列计数器
下一排
端接头

Tim,我刚刚用当前工作簿的Sheet1和sheet2进行了测试,但似乎不起作用。总计行和总计列的计算结果为1。也许我遗漏了什么?不过这很好用。。。嗯,我只重构了OP指向的帖子中的代码,所以我认为这对他们是有效的。这取决于两张工作表从A1开始都有相同的数据…要访问包含运行代码的工作簿,您可以直接使用
ThisWorkbook
,或者如果需要实际名称,则使用
ThisWorkbook.name
。如果需要当前活动工作簿,请使用
ActiveWorkbook