Sum/Average 行到 Table 多个选项卡 VBA
Sum/Average Rows to Table on Multiple Tabs VBA
我想为总和或平均值添加小计。这些选项卡上的 table 都具有相同的行长和相同的 headers(一组 8 个选项卡有 3 个额外的列,因此稍后我将创建另一个循环来解决这些问题).
我不确定如何使下面代码中的 table 引用通用以引用特定选项卡上的任何 table。这是我到目前为止所拥有的...任何帮助将不胜感激!谢谢!
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
如果每个 sheet 上只有一个 table,则解决方案相对简单。但是,如果有多个 table,您将需要在选项卡名称 sheet 上识别 table 名称和选项卡名称。这是如果每个 sheet 只有一个 table.
的解决方案
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
我在你的代码中删除了很多不必要的范围选择。无需选择对象即可使用它们。事实上,这样做会减慢速度。
我想为总和或平均值添加小计。这些选项卡上的 table 都具有相同的行长和相同的 headers(一组 8 个选项卡有 3 个额外的列,因此稍后我将创建另一个循环来解决这些问题).
我不确定如何使下面代码中的 table 引用通用以引用特定选项卡上的任何 table。这是我到目前为止所拥有的...任何帮助将不胜感激!谢谢!
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
如果每个 sheet 上只有一个 table,则解决方案相对简单。但是,如果有多个 table,您将需要在选项卡名称 sheet 上识别 table 名称和选项卡名称。这是如果每个 sheet 只有一个 table.
的解决方案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
我在你的代码中删除了很多不必要的范围选择。无需选择对象即可使用它们。事实上,这样做会减慢速度。