2016-10-22 46 views
0

我想在一个工作簿中比较两个工作表。一些比较两个工作表和复制行数据

如果上Worksheet2 Worksheet1 =小区A和
小区A如果细胞F于 Worksheet1 <>细胞F于Worksheet2然后
复印从Worksheet2 行通过行上Worksheet1否则
如果上Worksheet1 <小区A>细胞上Worksheet2然后
复印从Worksheet2行到下一个空行上 Worksheet1

这是我到目前为止有:

Sub CopyCells() 
Dim sh1 As Worksheet, sh2 As Worksheet 
Dim j As Long, i As Long, lastrow1 As Long, lastrow2 As Long 


Set sh1 = Worksheets("Sheet1") 
Set sh2 = Worksheets("Sheet2") 

lastrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 
lastrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 

For i = 2 To lastrow1 
    For j = 1 To lastrow2 
     If sh1.Cells(i, "A").Value = sh2.Cells(j, "A").Value And sh1.Cells(i, "F").Value <> sh2.Cells(j, "F").Value Then 
      sh1.Cells(i, "F").Value = sh2.Cells(j, "F").Value 
     End If 
    Next j 
Next i 

末次

+1

你可以在你的问题的具体* *的问题是什么?例如代码不起作用,有代码错误等... –

+0

我得到一个不匹配的错误,我无法弄清楚整个行复制的部分。 – GeoffDavis021

回答

0

试试这个:

Sub CopyCells() 
    Dim sh1 As Worksheet, sh2 As Worksheet 
    Dim i As Long, j As Long, lastrow1 As Long, lastrow2 As Long, counter As Long 

    Set sh1 = Worksheets("Sheet1") 
    Set sh2 = Worksheets("Sheet2") 

    lastrow1 = sh1.Cells(Rows.Count, "A").End(xlUp).Row 
    lastrow2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row 
    counter = 1 

    For i = 1 To lastrow1 
     For j = 1 To lastrow2 
      If sh1.Range("A" & i) = sh2.Range("A" & j) And sh1.Range("F" & i) <> sh2.Range("F" & j) Then 
       sh2.Range("A" & j).EntireRow.Copy Destination:=sh1.Range("A" & i) 
      ElseIf sh1.Range("A" & i) <> sh2.Range("A" & j) Then 
       sh2.Range("A" & j).EntireRow.Copy Destination:=sh1.Range("A" & lastrow1 + counter) 
       counter = counter + 1 
      End If 
     Next j 
    Next i 
End Sub 
+0

谢谢,这开始运行一分钟,然后我得到类型不匹配错误。当我调试这部分被突出显示:
GeoffDavis021

+0

如果sh1.Range(“A”&i)= sh2.Range(“A”&j)和sh1.Range(“F”&i)<> sh2.Range(“ F“&j)然后 – GeoffDavis021

+0

不应该是类似于如sh1.Range(”A“&i).Value = sh2.Range(”A“&j).Value和sh1.Range(”F“&i)。值= sh2.Range(“F”&j).Value然后? – Tyeler