【问题标题】:Excel: Consolidating with VBA for variable worksheetsExcel:与 VBA 合并用于可变工作表
【发布时间】:2015-07-26 11:00:30
【问题描述】:

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    尝试类似:

    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 is 列 B 和 C 采用 R1C1 表示法(Consolidate 方法要求)。我不确定是否需要参考书目。如果您重命名这本书,它可能需要更改。您可以尝试使用

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

    【讨论】:

    • 哦,R1C1 符号在行号和列号中。现在这清楚了。如果名称以 some_ 开头,我可以将“n”定义为 Activeworkbook.Worksheets.Count 吗?或者我将不得不在定义数组后依赖创建摘要工作表?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2015-07-30
    • 2019-01-21
    • 1970-01-01
    • 2021-07-28
    • 2012-06-14
    相关资源
    最近更新 更多