【发布时间】:2020-04-29 20:58:37
【问题描述】:
当列 D 等于“Y”时,我从列 E1:F1 复制行。在 Sheet2 中以转置格式粘贴。循环直到 Sheet1 的 D 列结束。当我编辑代码以粘贴到 G12(而不是 A1)时,它会将值相互粘贴,而不是向下到 G 列中的下一个空白单元格。
我不知道代码哪里错了。请帮忙!
Sub CopyPaste3()
Dim row As Integer
Dim lastrow As Integer
Dim r As Integer
Dim S1 As Worksheet
Dim S2 As Worksheet
Set S1 = Worksheets("Sheet1")
Set S2 = Worksheets("sheet2")
row = 1
rowg = 12
lastrow = S1.Range("A" & Rows.Count).End(xlUp).row
For r = 2 To lastrow
If S1.Range("D" & r).Value = "Y" Then
S1.Range("E1:F1").Rows(r).Copy
S2.Activate
S2.Cells(12, 7).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
rowg = S2.Range("G" & Rows.Count).End(xlUp).row + 1
End If
Next r
End Sub
【问题讨论】:
-
首先,您应该阅读this answer,了解如何避免使用
Select和Activate——在您的情况下(几乎在所有情况下)它们绝对不是必需的。其次,您可以通过将S2.Cells(12, 7).Select中的rowg替换为12来解决您的问题,使其成为S2.Cells(rowg, 7).Select