Excel:使用VBA整合可变工作表

时间:2015-07-26 11:00:31

标签: excel excel-vba vba

我在网上看到了很多与VBA“合并”的内容,但大多数是从一张到另一张的复制和粘贴。我正在尝试使用excel自己的整合工具,但在VBA中。事实是,张数可以是3到100.因此,逐个选择参数是不太实际的。假设每张纸具有相同的格式,3列。我想巩固最后两列(2和3)。每个工作表都有一个特定的命名约定,即some_2015 - ??,其中最后两个是数字,按顺序方式(00~99)。整合功能令人钦佩,只需要为每张纸指定每个范围是不切实际的。

以下是我录制的宏:

'Selection.Consolidate Sources:= Array(“'[Book1] some_2015-01'!C2:C3”,_“'[Book1] some_2015-02'!C2:C3”,“'[Book1] some_2015- 03'!C2:C3“),功能:= xlSum _,TopRow:= True,LeftColumn:= True,CreateLinks:= False'

总共2个问题,如何使阵列适应张数?我在指定B列和C列,但在代码中,它是“C2:C3”,这是否意味着范围是其他的?

1 个答案:

答案 0 :(得分:0)

尝试类似:

Sub ConsolidateSheets(n As Long)
    Dim A As Variant
    Dim i As Long
    ReDim A(0 To n - 1)
    For i = 0 To n - 1
        A(i) = "'[Book1]some_2015-" & Format(i + 1, "00") & "'!C2:C3"
        Debug.Print A(i)
    Next i
    Selection.Consolidate Sources:=A, Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
End Sub

n = 3应该重现录制的宏。显然,如果需要,可以更改Selection。 C2:C3 R1C1表示法中的B和C列(Consolidate方法要求)。我不确定是否需要图书参考。如果重命名该书,可能需要更改。您可以尝试使用

A(i) = "some_2015-" & Format(i + 1, "00") & "!C2:C3"