Сумма / Среднее количество строк в таблице на нескольких вкладках VBA - PullRequest
0 голосов
/ 17 октября 2018

Я хотел бы добавить промежуточные итоги для суммы или среднего.Все таблицы на этих вкладках имеют одинаковую длину строк и одинаковые заголовки (есть группа из 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 голосов
/ 17 октября 2018

Если на каждом листе только одна таблица, решение будет относительно тривиальным.Однако, если имеется несколько таблиц, вам нужно будет указать имя таблицы, а также имя вкладки на листе «Имена вкладок».Вот решение, если на каждом листе есть только одна таблица.

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

Я удалил много ненужного выбора диапазона в вашем коде.Объекты не нужно выбирать для работы с ними.На самом деле, это замедлит все, если вы это сделаете.

...