Excel Don';t复制其他工作簿中现有多列的行

Excel Don';t复制其他工作簿中现有多列的行,excel,vba,Excel,Vba,我有两个工作手册W1和W2,它们会将W1到W2的所有可见行复制。如果W2的第5列和第8列中已经存在W1中第3列和第4列的值,我需要一个不会复制可见行的宏。这就是我目前所拥有的 工作表W1第1页: 工作表W2第1页: 单击按钮时的预期结果: 只有2个高亮显示的行被复制到W2,因为W1中的第3列和第4列第5行已经存在于W2中的第5列和第8列第1935行,即使日期不同 代码:(仅将W1中的所有可见行复制到W2) 你可能会考虑两种方法。1.逐行遍历源范围,测试该行是否已存在于目标范围中,如果不存在

我有两个工作手册W1和W2,它们会将W1到W2的所有可见行复制。如果W2的第5列和第8列中已经存在W1中第3列和第4列的值,我需要一个不会复制可见行的宏。这就是我目前所拥有的

工作表W1第1页:

工作表W2第1页:

单击按钮时的预期结果:

只有2个高亮显示的行被复制到W2,因为W1中的第3列和第4列第5行已经存在于W2中的第5列和第8列第1935行,即使日期不同

代码:(仅将W1中的所有可见行复制到W2)


你可能会考虑两种方法。1.逐行遍历源范围,测试该行是否已存在于目标范围中,如果不存在,则复制。2.将源区域中所有可见的行复制到目标区域,然后删除重复的行<代码>作为范围的Dim rngCopy:作为变量的Dim arrCopy:使用wsCopy:设置rngCopy=.Range(.Cells(5,“A”),.Cells(.Rows.Count,“D”).End(xlUp)):arrCopy=rngCopy.Value:End With现在,您可以将可见单元格从rngCopy粘贴到指定的临时工作表或区域,并按照@Nicolas Hunter所述处理所有行,也可以使用arrCopy在一个循环中对可见行和合格行进行排序,并仅复制您批准的行。W1有多少行需要复印吗?首先构建W2中的数组,然后遍历W1中的每一行,检查它们是否存在于数组中,如果不存在,则复制。
Private Sub Send_Click()

 Dim wsCopy As Worksheet
 Dim wsDest As Worksheet

 Dim W2 as String

 W2 = "D:\Worksheet2.xlsm"


'Set variables for copy and destination sheets
Set wsCopy = Application.ThisWorkbook.Worksheets("Sheet1")
Set wsDest = Workbooks.Open(W2).Worksheets("Sheet1")

'Find first blank row in the destination range based on data in column A
lDestLastRow = wsDest.Range("table1").Columns(1).Find(What:="", LookIn:=xlValues, LookAt:=xlWhole).Row


wsCopy.Range("A5:A5000").SpecialCells(xlCellTypeVisible).Copy
wsDest.Cells(lDestLastRow, 1).PasteSpecial

wsCopy.Range("C5:C5000").SpecialCells(xlCellTypeVisible).Copy
wsDest.Cells(lDestLastRow, 5).PasteSpecial

wsCopy.Range("D5:D5000").SpecialCells(xlCellTypeVisible).Copy
wsDest.Cells(lDestLastRow, 8).PasteSpecial

End Sub