多个选项卡VBA上表的总行/平均行

时间:2018-10-17 19:33:04

标签: excel vba subtotal

我想加总和或小计。这些选项卡上的表都具有相同的行长和相同的标题(一组8个选项卡中有3个额外的列,因此稍后我将在解决这些问题时创建另一个循环)。

我不确定如何使以下代码中的表引用通用,以引用该特定选项卡上的任何表。这就是我到目前为止所拥有的...任何帮助将不胜感激!谢谢!

Sub AddTotals()

Dim tablename As Range
Dim TargetSheet As Worksheet
Dim tbl As ListObject
Dim rng As Range

Worksheets("Tab Names").Activate

For Each tablename In Worksheets("Tab Names").Range("B1:B64").Cells
    Set TargetSheet = Worksheets(CStr(tablename.Value))
    Set rng = Range(TargetSheet.Range("F11"), TargetSheet.Range("F11").SpecialCells(xlLastCell))

    Range("F11").Select
    ActiveSheet.ListObjects(Active).ShowTotals = True
    Range("Table2[[#Totals],[Var %]]").Select
    ActiveSheet.ListObjects("Table2").ListColumns("Var %").TotalsCalculation = _
    xlTotalsCalculationAverage
    Range("Table2[[#Totals],[Var $]]").Select
    ActiveSheet.ListObjects("Table2").ListColumns("Var $").TotalsCalculation = _
    xlTotalsCalculationSum

Next tablename

1 个答案:

答案 0 :(得分:0)

如果每张纸上只有一张桌子,则解决方案相对来说很简单。但是,如果有多个表,则需要在“选项卡名称”表上标识表名称以及选项卡名称。如果每张纸只有一张桌子,这是解决方案。

For Each tablename In Worksheets("Tab Names").Range("B1:B64")
    Set TargetSheet = Worksheets(CStr(tablename.Value))
    With TargetSheet.ListObjects(1)
        .ShowTotals = True
        .ListColumns("Var %").TotalsCalculation = xlTotalsCalculationAverage
        .ListColumns("Var $").TotalsCalculation = xlTotalsCalculationSum
    End With
Next tablename

我删除了代码中很多不必要的范围选择。不需要选择对象即可使用它们。实际上,这样做会减慢速度。