将工作表合并为一个

时间:2013-06-10 18:03:06

标签: excel vba excel-vba excel-2003

我有一些

风格的excel工作表

组织1


姓名职业

Chris - contracter

简 - 员工


组织2


姓名职业

鲍勃 - 设施

Trey - 软件开发人员


并希望将这些工作表组合成格式为

的主工作表

组织名称职业

1 - Chris - contracter

1 - 简 - 员工

2 - Bob - 设施

2 - Trey - 软件开发人员

使用VBA我可以使用

将所有数据提取到一个工作表中
NumSheets = Worksheets.Count

Worksheets(1).Select
Sheets.Add
ActiveSheet.Name = "All"
For X = 1 To NumSheets
Worksheets(X + 1).Select
curAgency = ActiveSheet.Name
NumRows = ActiveSheet.UsedRange.Rows.Count
Rows("5:" & NumRows).Select
Selection.Copy
Worksheets("All").Select
ActiveSheet.Range("B1").Paste
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
Worksheets(X + 1).Select
Range("A1").Select
Next X
Worksheets("All").Select
Range("A1").Select
End Sub

但我不确定如何插入列并将组织名称附加到主列表中的每个组。

2 个答案:

答案 0 :(得分:0)

请使用RDBMerge加载项,它将组合来自不同工作表的数据并为您创建主表。有关详细信息,请参阅以下链接。

http://duggisjobstechnicalstuff.blogspot.in/2013/03/how-to-merge-all-excel-worksheets-with.html

Download RDBMerge

答案 1 :(得分:0)

我不知道我是否理解你的问题,但这可能有所帮助:

Sub MergeAll()
Dim r As Long, ws As Worksheet, rAll As Long, wsAll As Worksheet
Dim i As Long
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.name = "All"
Set wsAll = ActiveSheet
rAll = 2
For Each ws In Worksheets
    If ws.name <> "All" Then
        r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
        For i = 1 To r
            wsAll.Cells(rAll, 1) = ws.name
            wsAll.Cells(rAll, 2) = ws.Cells(i, 1)
            wsAll.Cells(rAll, 3) = ws.Cells(i, 2)
            rAll = rAll + 1
        Next i
    End If
Next ws
End Sub

我猜测,有一个包含多个工作表的Excel文件。每张表代表一个组织。 因此,makro将遍历每个工作表(除了名为“全部”的工作表),并将工作表的数据写入“全部”。 我希望这就是你所需要的。