合并多个工作表中的表

问题描述 投票:0回答:1
Option Explicit

Sub Macro70()

Dim wb As Workbook
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim sheets_Count As Integer
Dim sheets_Name() As String
Dim i As Integer
sheets_Count = Sheets.Count

ReDim sheets_Name(0 To sheets_Count - 1)

For i = 1 To sheets_Count
   sheets_Name(i - 1) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R1C1:R17C2"
Next i

Set wb = ThisWorkbook
Set ws2 = wb.Sheets.Add()

With ws2
    .Range("A1").Consolidate sheets_Name, xlSum, True, True, False
End With

End Sub


Sub Macro71()

Dim wb As Workbook
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim sheets_Count As Integer
Dim sheets_Name() As String
Dim i As Integer
sheets_Count = Sheets.Count

ReDim sheets_Name(0 To sheets_Count - 1)

For i = 1 To sheets_Count
   sheets_Name(i - 1) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R24C1:R35C2"
Next i

Set wb = ThisWorkbook
Set ws2 = wb.Sheets.Add()

With ws2
    .Range("A24").Consolidate sheets_Name, xlSum, True, True, False
End With

End Sub


Sub Macro72()

Dim wb As Workbook
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim sheets_Count As Integer
Dim sheets_Name() As String
Dim i As Integer
sheets_Count = Sheets.Count

ReDim sheets_Name(0 To sheets_Count - 1)

For i = 1 To sheets_Count
   sheets_Name(i - 1) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R39C1:R50C2"
Next i

Set wb = ThisWorkbook
Set ws2 = wb.Sheets.Add()

With ws2
    .Range("A39").Consolidate sheets_Name, xlSum, True, True, False
End With

End Sub

这对我来说非常合适,但我必须说的最后一个问题是它会产生新的表格。我可以为所有这些表收集相同的数据表。我尝试将ws2.Name =“合并”为所有三个,但它显示错误。我希望71和72可以放入同一张表中,因为70可以放入。并且非常感谢帮助我。

arrays vba concatenation
1个回答
0
投票

我觉得你需要更像这样的东西(未经测试)

sheets_Count = Sheets.Count

ReDim sheets_Name(0 to sheets_Count-1)

For i = 1 To sheets_Count
   sheets_Name(i-1) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R10C1:R26C2"
Next i

Set wb = ThisWorkbook 
Set ws2 = wb.Sheets.Add()

With ws2
    .Range("A1").Consolidate sheets_Name, xlSum, True, True, False
End With

看到:

https://docs.microsoft.com/en-us/office/vba/api/excel.range.consolidate

以下是该链接的示例:

Worksheets("Sheet1").Range("A1").Consolidate _ 
            Sources:=Array("Sheet2!R1C1:R37C6", "Sheet3!R1C1:R37C6"), _ 
            Function:=xlSum

编辑 - 如果你想从每张表中添加多个范围,你可以试试这个:

Dim n
sheets_Count = Sheets.Count

ReDim sheets_Name(0 To (sheets_Count * 2) - 1)
n = 0
For i = 1 To sheets_Count
   sheets_Name(n) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R10C1:R26C2" 
   sheets_Name(n+1) = "'" & ActiveWorkbook.Sheets(i).Name & "'!R40C1:R50C2"
   n = n + 2
Next i
© www.soinside.com 2019 - 2024. All rights reserved.