首页 > 解决方案 > Excel VBA - 将表格中除 x 行之外的所有行复制到另一个表格的底部

问题描述

我目前正在为一项工作编写宏,在该工作中,我需要将表格的 x 行(x 在单元格 M2 中定义)之外的所有行(x 在单元格 M2 中定义)剪切并粘贴到第二个表格的底部。在此之下还有第三个表格,它汇总了两个顶级表格中的值。之后,第二个表按潜在客户数量从 ZA 中排序。

目前我已经到了这个阶段,如果 x=1(如果 M2 被 1 替换它可以工作)。但是,我希望能够定义我想在第一个表中保留多少行。在 X>1 时,从表 1 复制的文件最终与第三个表重叠,这导致后面的宏的其余部分出现问题(这一切正常,为什么最后没有 End Sub)。

我的表由 7 列组成,它们之间没有空格。

Sub Complete_Email_Macro()
' Setting Both Partner Report Tab and Final Data as a Worksheet
Dim PR As Worksheet
Set PR = Worksheets("Partner Report")
Dim FL As Worksheet
Set FL = Worksheets("Final Data")

Dim tbl As ListObject
Set tbl = PR.ListObjects("np_last")
tbl.ListRows.Add
Set tbl2 = PR.ListObjects("pp_last")

'Copying papers not needed in pp_last to np_last
Dim LastRow As Long
LastRow = tbl.Range.Rows.Count
With tbl2.DataBodyRange
    .Offset(M2, 0).Resize(.Rows.Count - M2, .Columns.Count).Rows.Cut Destination:=tbl.Range(LastRow, "A").Offset(-1)
End With

' Sort_Table Macro - Sort non-promoted section of the table from greatest no. of leads this month to smallest

    Worksheets("Partner Report").Activate
    Range("np_last[#All]").Select
    ActiveWorkbook.Worksheets("Partner Report").ListObjects("np_last").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("Partner Report").ListObjects("np_last").Sort. _
        SortFields.Add2 Key:=Range("np_last[[#Headers],[#Data],[Leads]]"), SortOn:= _
        xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
     With ActiveWorkbook.Worksheets("Partner Report").ListObjects("np_last").Sort
        .Orientation = xlTopToBottom
        .Apply
        End With

任何帮助,将不胜感激。问题出现在以 offset 语句开头的行。

标签: excelvba

解决方案


VBA 不能识别M2为单元格引用。有效的引用是cells(2,13)orrange("m2")或 even [m2],但需要注意的是,即使在引用了这些单元格之后,每个单元格都有其背后的属性,例如range("m2").valueorrange("m2").characters


推荐阅读