在多个选项卡 VBA 上汇总/平均行到表格
Posted
技术标签:
【中文标题】在多个选项卡 VBA 上汇总/平均行到表格【英文标题】:Sum/Average Rows to Table on Multiple Tabs VBA 【发布时间】:2018-10-17 19:33:04 【问题描述】:我想为总和或平均值添加小计。这些选项卡上的表格都具有相同的行长和相同的标题(有一组 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
【问题讨论】:
只是为了验证,给定Range("Table2[[#Totals],[Var %]]").Select
,您希望将 Table2 替换为表名吗?那么这只是连接这个字符串的问题。 Range(CStr(tablename.Value) & "[[#Totals],[Var %]]").Select
我也想连接 ActiveSheet 行,以便可以为每个选项卡添加小计!
【参考方案1】:
如果每张纸上只有一个表,则解决方案相对简单。但是,如果有多个表,您将需要在选项卡名称表上标识表名称以及选项卡名称。如果每张工作表只有一个表格,这就是解决方案。
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
我在您的代码中删除了许多不必要的范围选择。无需选择对象即可使用它们。事实上,如果你这样做,它会减慢速度。
【讨论】:
以上是关于在多个选项卡 VBA 上汇总/平均行到表格的主要内容,如果未能解决你的问题,请参考以下文章