我在网上看到了很多与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”,这是否意味着范围是其他的?
答案 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"