汇总成母版表后自动排序

时间:2018-10-19 13:52:05

标签: excel vba excel-vba

对于我的职业,我目前正在制作一个Excel列表,该列表将6个列表汇总为一个主列表,删除标题(A1:J7),然后按条件对它们进行排序。在这种情况下,它将是J(priority)和A(secondary)列。

我已经达到了将我需要的列表合并到一个主列表中的地步,但是它仍然在顶部保留了一些空间(不删除标题),并通过标题将列表本身分开。

我的VBA的基础是-

Sub Combine()
    Dim J As Integer
        On Error Resume Next
            Sheets(1).Select
                Worksheets.Add
                Sheets(1).Name = "Combined"
                Sheets(2).Activate
                Range("A8").EntireRow.Select
            Selection.Copy Destination:=Sheets(1).Range("A8")
        For J = 2 To Sheets.Count
                Sheets(J).Activate
                Range("A8").Select
                    Selection.CurrentRegion.Select
                    Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
                    Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
        Next
End Sub

现在,我个人遇到的困难是如何添加该函数以删除标头,然后按照上面提到的条件对自身进行排序。

我一直在网上搜索并通过Google进行搜索,但是我找不到任何可以帮助回答而且还可以解释我所遇到的问题的帮助,以便我知道为什么要按指定的顺序进行操作。< / p>

1 个答案:

答案 0 :(得分:0)

如果我遵循您要正确执行的操作:

  Sub Combine()
    Dim J As Integer
    dim targetcell as range
    Worksheets.Add before:=sheets(1)
    Sheets(1).Name = "Combined"
    set targetcell = sheets(1).range("a8") 'I think this is where you want to start
    with Sheets(2)
         .Range("A8").EntireRow.Copy Destination:=targetcell
         set targetcell = targetcell.offset(1,0) 'down one row
    end with
    For J = 2 To Sheets.Count
        With Sheets(J).Range("A8").CurrentRegion
             ' Sheets(J).Range("A9:A" & .rows.count -8).copy  Destination:= targetcell
              'this should be:
               Sheets(J).Range("A9:A" & .rows.count -8).entirerow.copy  Destination:= targetcell
              'set targetcell = targetcell.offset(1,0)
               'should be replaced with 
               Set targetcell = Sheets("combined").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
         end with
     Next J
     targetcell.currentregion.sort key1:=targetcell 'assume sort on column A
End Sub