![](/img/trans.png)
[英]Excel VBA Copy and pasting cells with certain values in a range from one worksheet to another
[英]Copy Pasting Range of varying length from one worksheet to another worksheet using Excel VBA
我有设置为输出的数据,如下所示:
我正在尝试创建一个循环
这是我遇到麻烦的代码。
Sub CopyPasteDex()
Dim wksDest As Worksheet
Dim wksSource As Worksheet
Dim Rngsource As Range
Dim NextRow As Long
Dim LastRow As Long
Dim LastCol As Long
Dim c As Long
Application.ScreenUpdating = False
Set wksSource = Worksheets("Sheet1")
Set wksDest = Worksheets("Sheet2")
With wksDest
NextRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
With wksSource
LastCol = .Cells(3, .Columns.Count).End(xlToLeft).Column
For c = 2 To LastCol Step 7
LastRow = .Cells(.Rows.Count, c).End(xlUp).Row
Set Rngsource = .Range(.Cells(3, c), .Cells(LastRow, c + 3))
Rngsource.Copy
wksDest.Range("A:A").PasteSpecial.xlPasteValues
NextRow = NextRow + Rngsource.Rows.Count
Next c
End With
Application.ScreenUpdating = True
End Sub
这似乎为我工作。
Sub CopyPasteDex()
Dim wksDest As Worksheet
Dim wksSource As Worksheet
Dim Rngsource As Range
Dim NextRow As Long
Dim LastRow As Long
Dim LastCol As Long
Dim c As Long
Application.ScreenUpdating = False
Set wksSource = Worksheets("Sheet1")
Set wksDest = Worksheets("Sheet2")
With wksDest
NextRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
End With
With wksSource
LastCol = .Cells(3, .Columns.Count).End(xlToLeft).Column
For c = 2 To LastCol Step 8 ' make sure that the step is changed to 8 here.
LastRow = .Cells(.Rows.Count, c).End(xlUp).Row
Set Rngsource = .Range(.Cells(3, c), .Cells(LastRow, c + 3))
Rngsource.copy
wksDest.Cells(NextRow, 1).PasteSpecial xlPasteValues ' Note that I've changed .range to .cells and changed the destination row to NextRow
NextRow = NextRow + Rngsource.Rows.Count
Next c
End With
Application.ScreenUpdating = True
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.