【发布时间】:2020-06-14 07:36:42
【问题描述】:
我在两个不同的工作表中有两个表:一个表包含我手动输入的源数据(在“路线图数据”表中),另一个表(在“概览”表中)是另一个要保存的容器路线图数据表中可能更改的数据。 我的目标是复制路线图数据表中的表行,前提是该行尚未出现在概览表的表中。 下面是我写的代码,灵感来自另一个post
Public Sub CopyRowsAcross()
Dim ione, itwo As Integer
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Roadmap Data")
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Overview")
For ione = 3 To ws1.Range("B65536").End(xlUp).Row
itwo = 3
Do Until itwo = ws2.Range("B65536").End(xlUp).Row + 1
If ws1.Cells(ione, 2) = ws2.Cells(itwo, 2) And ws1.Cells(ione, 3) = ws2.Cells(itwo, 3) And ws1.Cells(ione, 4) = ws2.Cells(itwo, 4) And ws1.Cells(ione, 5) = ws2.Cells(itwo, 5) And ws1.Cells(ione, 6) = ws2.Cells(itwo, 6) And ws1.Cells(ione, 7) = ws2.Cells(itwo, 7) And ws1.Cells(ione, 8) = ws2.Cells(itwo, 8) Then
Exit Do
Else
ws1.Rows(ione).Copy ws2.Rows(ws2.Cells(ws2.Rows.Count, 2).End(xlUp).Row + 1)
Exit Do
End If
itwo = itwo + 1
Loop
Next ione
End Sub
源数据是这样的: enter image description here
但是宏的结果是错误的: enter image description here
我编写 do until 循环的方式可能有问题,我认为我需要一个 for 循环,用“或”条件循环概览表的行,但我无法想象如何做到这一点。 任何简化我用来验证两个表的行是否相同的条件的建议都值得赞赏。
【问题讨论】:
标签: excel vba for-loop copy rows