Почему мой код промежуточного итога имеет значение 1, когда значений нет? - PullRequest
0 голосов
/ 17 января 2019

, поэтому я запускаю код, который фильтрует мои данные, а затем берет количество данных и вставляет их в файл Excel. Я использую этот код для подсчета данных:

lastrow = Cells(Rows.count, "A").End(xlUp).Row
count = Application.WorksheetFunction.Subtotal(3, Range("A2:A" & lastrow))

По какой-то причине, когда я отфильтровал свои данные так, чтобы никакое значение не было видно кроме моей верхней строки, которая находится в строке 1, это дает мне значение 1, а не 0. Любые идеи, почему это происходит ?

Спасибо

1 Ответ

0 голосов
/ 18 января 2019

Это на самом деле забавная вещь, которую я тоже обнаружил некоторое время назад. Происходит следующее: с пустым (или только что отфильтрованным до появившимся пустым) столбцом A, lastrow = 1, что означает, что диапазон промежуточного итога составляет Range("A2:A1").

Например, тест:

Debug.Print Application.WorksheetFunction.Subtotal(3, Range("A2:A1"))
...