对于我的职业,我目前正在制作一个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>
答案 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