在VBA中创建具有多个源的Excel Consolidated Worksheet

时间:2016-09-10 11:27:57

标签: excel-vba vba excel

我正在尝试使用VBA在一个工作表上合并多个工作表。如何告诉VBA仅合并可见的工作表?

1 个答案:

答案 0 :(得分:2)

我从http://www.mrexcel.com/forum/excel-questions/620641-using-visual-basic-applications-perform-consolidate-function.html获取了Jerry Sullivan的答案并进行了调整。 MSDN站点在理解参数方面有所帮助,例如,范围数组必须包含R1C1样式的完全限定地址。

当然,您没有详细说明如何使用Consolidate,因此这个答案是通用的。它使用Sum函数合并活动工作簿中所有可见工作表的已使用范围:

Sub Consolidate_Totals()
    Dim ws As Worksheet
    Dim sArray As Variant, i As Integer
    ReDim sArray(1 To 1)

    '---Make Array with Named Ranges to be Consolidated
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Visible And ws.Name <> "Sheet1" Then
            i = i + 1
            ReDim Preserve sArray(1 To i)
            sArray(i) = ws.UsedRange.Address(ReferenceStyle:=XlReferenceStyle.xlR1C1, external:=True)
        End If
    Next ws
    If i = 0 Then Exit Sub

    '---Consolidate using the Array
    Sheets("Sheet1").Range("A1").Consolidate Sources:=(sArray), _
        Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False
End Sub