Промежуточные итоги Excel VBA оставляют большой разрыв - PullRequest
2 голосов
/ 08 февраля 2012

Я использую Excel 2003, все еще новичок в VBA, так что я уверен в чем-то очевидном. У меня есть электронная таблица, в которой перечислено количество моделей юнитов, кому принадлежит юнит и какая «группа» людей, которым (команда 1, команда 2 и т. Д.) Принадлежит юнит, и я хочу получить промежуточный итог при сортировке по команде. используя этот код:

Sub Subtotals()
    Rows.Select
    Selection.Subtotal GroupBy:=4, Function:=xlCount, TotalList:=Array(4), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End Sub

Теперь это прекрасно работает при подсчете юнитов по командам и вставке промежуточных итогов для каждой команды, но по какой-то причине последняя команда и общий итог находятся примерно в 300 строках по сравнению с последней записью. Почему он это делает?

1 Ответ

1 голос
/ 08 февраля 2012

Причина, по которой это непредсказуемо, заключается в неквалифицированном Rows.Select

Вам необходимо указать диапазон, к которому вы действительно хотите применить промежуточные итоги, например:

Sub Subtotals()
    Dim rng as range

    Set rng = '  the range you want
    rng.Subtotal GroupBy:=4, Function:=xlCount, TotalList:=Array(4), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
End Sub

Существует множество способовуказав диапазон в VBA, программный и ручной.Какой из них использовать, зависит в основном от макета вашего листа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...