我有一个宏,它根据特定的单元格值复制整行,并将这些行粘贴到另一个工作表中。但是,在第二张纸上,它粘贴到单元格B1,但我希望它粘贴到B2,以便我可以包含标题。
(测试表来自B:E)
Dim C As Range
Dim Test As Worksheet
Dim Pastesheet As Worksheet
Dim j As Integer
'Find the last row with data in column C
LR = Worksheets("Test Sheet").Cells(Rows.Count, "B").End(xlUp).Row
Set Test = Worksheets("Test Sheet") ' Copy From this sheet
Set Pastesheet = Worksheets("Inventory") ' to this sheet
'look at every cell in D2 onwards
j = 1
For Each C In Test.Range("D2:D" & LR)
If C.Value = True Then
'Copy code
C.EntireRow.Copy Pastesheet.Rows(j) ' copy the row from column D that meets that requirements
j = j + 1
End If
Next C
End Sub
答案 0 :(得分:0)
解决方案只是将粘贴行更改为从2开始,因此j = 2
而不是j = 1
我还要补充说,如果你不需要在复制的选择中拉出单元格的格式(也就是你只需要值),我建议你不要使用复制功能,因为这可以得到在大型数据集上相当慢。如果情况确实如此,以下情况会很好地发挥作用:
...
j = 1
For Each C In Test.Range("D2:D" & LR)
If C.Value = True Then
Pastesheet.Range(Pastesheet.Cells(j, 2),Pastesheet.Cells(j, 5)).Value = Test.Range(Test.Cells(C.Row, 2),Test.Cells(C.Row, 5)).Value
j = j + 1
End If
Next C
...
注意:我假设您要复制的数据只有4列,因为您声明数据来自B:E,但可以调整此数据以捕获更多列根据需要简单地通过调整列数
代码本身比粘贴命令稍微长一些,看起来不那么优雅,但对于大型数据集,这可以节省相当多的处理时间。