Excel - 用于添加列ID的VBA代码,然后将所有工作表合并到工作表中

时间:2015-08-05 01:07:35

标签: excel vba excel-vba

我有一张包含多张纸的excel文件。每张工作表都具有相同的格式,例如:

表1:名称“01”

╔══════╦═══════╗
║ Name ║ Value ║
╠══════╬═══════╣
║ a    ║     1 ║
║ b    ║     2 ║
╚══════╩═══════╝

表2:名称“02”

╔══════╦═══════╗
║ Name ║ Value ║
╠══════╬═══════╣
║ c    ║     3 ║
║ d    ║     4 ║
╚══════╩═══════╝

我想将所有这些表格合并到一个新表格中:

图纸组合:名称“合并”

╔══════╦═══════╦════╗
║ Name ║ Value ║ ID ║
╠══════╬═══════╬════╣
║ a    ║     1 ║ 01 ║
║ b    ║     2 ║ 01 ║
║ c    ║     3 ║ 02 ║
║ d    ║     4 ║ 02 ║
╚══════╩═══════╩════╝

我找到了一个VBA代码来组合所有工作表但我不知道如何在组合之前为每个工作表添加列ID。 VBA代码是:

Sub Combine()
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").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

非常感谢,如果有人可以帮助我。

2 个答案:

答案 0 :(得分:0)

假设您的问题中只显示了两列。这应该有用。

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

答案 1 :(得分:0)

我在Excel VBA初级水平,因此有兴趣尝试在论坛中提出的各种代码片段。我只想发表评论,但没有必要的评论意见。我把我的观点作为答案。

尝试代码@DiegoAndresJAY时,C列值与A列和B列中的值不对齐。次要调整以下行会给出正确的对齐方式。也许是一种疏忽。

      Sheets(1).range(sheets(1).cells(Sheets(1).Range("C65536").End(xlUp).Row+1, 3), sheets(1).cells(Sheets(1).Range("A65536").End(xlUp).Row, 3)) = Sheets(j).name

谢谢