如何将整行复制到另一个工作表

时间:2013-01-04 15:10:47

标签: excel vba excel-vba

伙计我正在寻找一个简单的Excel宏,它可以在列不同时将一行从一张纸复制到另一张,但在新纸张中不会放在它们所在的同一行,否则它将是连续补充......

Sheet 1中:

A B C
一个西班牙1000
两个日本2000年 三个EEUU 3000

Sheet 2中:

A B C
一意大利1000
两个日本2000年 三个EEUU 4000

表Sheet 3(最终):

A B C
一意大利1000
三个EEUU 4000

我会将工作表“Sheet1”与工作表“Sheet2”进行比较,如果您发现任何列有任何差异,请将工作表“Sheet2”的整行复制到工作表“Sheet3”。

任何提示都是非常有必要的。 索里为我的英语,但我来自阿根廷。

谢谢,Ignacio G

编辑: 实际上,我正在使用这段代码:

Public Sub ReconReport()
Dim rngCell As Range

For Each rngCell In Worksheets("Sheet1").UsedRange
    If Not rngCell = Worksheets("Sheet2").Cells(rngCell.Row, rngCell.Column) Then _
        Let Worksheets("Sheet3").Cells(rngCell.Row, rngCell.Column) = rngCell
    Next
End Sub

但它只是复制不同的单元格,我需要的是复制整行......

1 个答案:

答案 0 :(得分:0)

慢回答:

Sub ReconReport()
    'Set Worksheets to Variables
    Dim sheetOne, sheetTwo, sheetThree As Worksheet
    Set sheetOne = Worksheets("Sheet1")
    Set sheetTwo = Worksheets("Sheet2")
    Set sheetThree = Worksheets("Sheet3")

    'Find Used Rows and Columns
    Dim usedRows, usedCols As Integer
    usedRows = sheetOne.UsedRange.Rows.Count
    usedCols = sheetOne.UsedRange.Columns.Count

    Dim row, col, copyRow, copyCol As Integer
    copyRow = 1 'Row on sheet three
    For row = 1 To usedRows
        For col = 1 To usedCols
            If Trim(sheetOne.Cells(row, col).Value) <> Trim(sheetTwo.Cells(row, col).Value) Then

                'Copy All Columns from that row (on Sheet2) to Sheet3
                For copyCol = 1 To usedCols
                    sheetThree.Cells(copyRow, copyCol).Value = sheetTwo.Cells(row, copyCol).Value
                Next copyCol

                'Increment the sheet3 row so next info starts on new line
                copyRow = copyRow + 1 

                'Exit column search loop so only one row added if two columns have differences in the same row 
                Exit For

            End If
        Next col
    Next row
End Sub