我如何从另一个 sheet 复制行并将它们粘贴到其中有 table 的 sheet 中?
How do i copy rows from another sheet and paste them into a sheet that has a table in it?
我正在编写代码,我想做的就是从一个 sheet 复制数据并将其粘贴到另一个具有 table 设置的 sheet。
我的代码完全按照我的意愿执行,但是 table 不会调整大小以包含复制的所有行,只有复制数据的第一行进入 table。其余的格式不在 table.
这是我运行代码
后的样子
Sub LastRowInOneColumn()
Dim LastRow As Longenter image description here
Dim i As Long, j As Long
'Find the last used row in a Column
With Worksheets("First Page")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
'first row number where you need to paste values in Sheet1'
With Worksheets("Report")
j = .Cells(.Rows.Count, "A").End(xlUp).Row '+ 1
End With
For i = 1 To LastRow
With Worksheets("First Page")
'If .Cells(i, 1).Value = "X" Then
.Rows(i).Copy Destination:=Worksheets("Report").range("A" & j)
j = j + 1
'End If
End With
Next i
End Sub
通常,在 table 末尾下方插入会使它自动增长,但当粘贴的范围超过 table 中的列数时则不会。有两种处理方法:
1- 限制复制范围为table中的列数;即
.Rows(i).Resize(,4).Copy Destination:=Worksheets("Report").range("A" & j)
' ^^^^^^^^^^^
2- 使用方法 ListObject.Resize
显式调整 table 的大小;即
With Sheet1.ListObjects(1)
.Resize .Range.Resize(.Range.Rows.count + 1)
End With
我正在编写代码,我想做的就是从一个 sheet 复制数据并将其粘贴到另一个具有 table 设置的 sheet。
我的代码完全按照我的意愿执行,但是 table 不会调整大小以包含复制的所有行,只有复制数据的第一行进入 table。其余的格式不在 table.
这是我运行代码
后的样子Sub LastRowInOneColumn()
Dim LastRow As Longenter image description here
Dim i As Long, j As Long
'Find the last used row in a Column
With Worksheets("First Page")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
'first row number where you need to paste values in Sheet1'
With Worksheets("Report")
j = .Cells(.Rows.Count, "A").End(xlUp).Row '+ 1
End With
For i = 1 To LastRow
With Worksheets("First Page")
'If .Cells(i, 1).Value = "X" Then
.Rows(i).Copy Destination:=Worksheets("Report").range("A" & j)
j = j + 1
'End If
End With
Next i
End Sub
通常,在 table 末尾下方插入会使它自动增长,但当粘贴的范围超过 table 中的列数时则不会。有两种处理方法:
1- 限制复制范围为table中的列数;即
.Rows(i).Resize(,4).Copy Destination:=Worksheets("Report").range("A" & j)
' ^^^^^^^^^^^
2- 使用方法 ListObject.Resize
显式调整 table 的大小;即
With Sheet1.ListObjects(1)
.Resize .Range.Resize(.Range.Rows.count + 1)
End With