我正在处理一项任务,我需要将Sheet1和Sheet2中的特定列复制到Sheet3中 .
应该复制数据的工作表从第14行开始.Pheet1和Sheet2的数据长度也不同 .
我已经找到了一种方法将数据从Sheet1复制到sheet3(通过研究) . 问题是当我尝试将数据从sheet2复制到sheet3时,我的代码只会覆盖从sheet1复制的sheet3中的数据 .
我希望我的代码将数据从sheet2复制到sheet3,并将其直接放在从sheet1复制的数据下面 . 并且由于来自sheet1的数据可能会有所不同(它可能包含0行或100行) .
Sub copyDataFromTwoSheetsIntoOneSheet()
With Sheets("Sheet1")
.AutoFilterMode = False
LR = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("B14:O" & LR).AutoFilter Field:=14, Criteria1:="<>"
If LR > 1 Then
.Range("B14:B" & LR).Copy
Sheets("Sheet3").Range("B14").PasteSpecial xlPasteValues
.Range("C14:C" & LR).Copy
Sheets("Sheet3").Range("C14").PasteSpecial xlPasteValues
.Range("D14:D" & LR).Copy
Sheets("Sheet3").Range("D14").PasteSpecial xlPasteValues
.Range("E14:E" & LR).Copy
Sheets("Sheet3").Range("E14").PasteSpecial xlPasteValues
.Range("F14:F" & LR).Copy
Sheets("Sheet3").Range("F14").PasteSpecial xlPasteValues
.Range("G14:G" & LR).Copy
Sheets("Sheet3").Range("G14").PasteSpecial xlPasteValues
.Range("H14:H" & LR).Copy
Sheets("Sheet3").Range("H14").PasteSpecial xlPasteValues
.Range("I14:I" & LR).Copy
Sheets("Sheet3").Range("I14").PasteSpecial xlPasteValues
.Range("J14:J" & LR).Copy
Sheets("Sheet3").Range("J14").PasteSpecial xlPasteValues
.Range("O14:O" & LR).Copy
Sheets("Sheet3").Range("N14").PasteSpecial xlPasteValues
End If
.AutoFilterMode = False
End With
With Sheets("Sheet2")
.AutoFilterMode = False
LR = .Range("B" & .Rows.Count).End(xlUp).Row
.Range("B14:M" & LR).AutoFilter Field:=12, Criteria1:="<>"
If LR > 1 Then
.Range("B14:B" & LR).Copy
Sheets("Sheet3").Range("B14").PasteSpecial xlPasteValues
.Range("C14:C" & LR).Copy
Sheets("Sheet3").Range("C14").PasteSpecial xlPasteValues
.Range("D14:D" & LR).Copy
Sheets("Sheet3").Range("D14").PasteSpecial xlPasteValues
.Range("E14:E" & LR).Copy
Sheets("Sheet3").Range("E14").PasteSpecial xlPasteValues
.Range("F14:F" & LR).Copy
Sheets("Sheet3").Range("F14").PasteSpecial xlPasteValues
.Range("G14:G" & LR).Copy
Sheets("Sheet3").Range("G14").PasteSpecial xlPasteValues
.Range("H14:H" & LR).Copy
Sheets("Sheet3").Range("H14").PasteSpecial xlPasteValues
.Range("I14:I" & LR).Copy
Sheets("Sheet3").Range("I14").PasteSpecial xlPasteValues
.Range("J14:J" & LR).Copy
Sheets("Sheet3").Range("J14").PasteSpecial xlPasteValues
.Range("M14:M" & LR).Copy
Sheets("Sheet3").Range("N14").PasteSpecial xlPasteValues
End If
.AutoFilterMode = False
End Sub
2 回答
对于初学者,
可以浓缩为:
因为它是一个连续的范围
对于最后一个数据点以下的粘贴,您可以使用以下内容:
基本上它在B列中从表格的最后一行上升到最后一位数据(不会物理移动但计算出位置),然后它偏移1行(换句话说,最后一行下面的1个单元格)一点数据)
您还可以循环第1页和第2页,这样您只需编写一次代码,无需重复(我也可以自由地为您声明LR变量) .
您可以按如下方式重构代码: