У меня есть набор данных, в котором я использую фильтр. Я просто хочу рассчитать общие значения в столбце N, которые видны. Данные начинаются в строке 2 и заканчиваются в строке 2047.SpecialCells (xlCellTypeVisible) также включает скрытые/отфильтрованные ячейки
Я видел this thread, но это дает мне тот же тип проблемы, который у меня есть.
Вот моя функция:
Function sumVisible() As String
Dim rng As Range
Set rng = Range("N2:N2047").SpecialCells(xlCellTypeVisible)
' Debug.Print "Range: " & rng.Address & ", Sum: " & WorksheetFunction.Sum(rng)
sumVisible = Format(WorksheetFunction.Sum(rng), "$#,###.##")
End Function
С моим текущим фильтром, моя строка заголовка (1) видно, как и строки 901 до 937 Итак, я хочу подвести N901: N937.
Однако rng
продолжает устанавливаться в $N$2:$N$2047
. Я ожидал, что это будет $N$901:$N$937
.
Используя функцию, которая дается нить я связан выше, я получаю диапазон $N$2:$N$937
... так, по крайней мере, я правильно получать конец строки, но не начальную строку.
Но!, если я нахожу Range("N2:N2047").SpecialCells(xlCellTypeVisible).Select
в окне Immediate, вне макроса, он правильно выбирает только видимые ячейки. И еще один шаг, делая ?Range("N2:N2047").SpecialCells(xlCellTypeVisible).address
правильно возвращает $N$901:$N$937
.
Что может быть неправильным?
Редактировать: Я только что нашел, что выполнение =SUBTOTAL(9,N1:N2047)
будет просто суммировать видимые ячейки, поэтому я использую это. Но мой вопрос все еще стоит - почему не SpecialCells(xlCellTypeVisible)
работает правильно в макросе?
Функция работает правильно для меня. Как вы скрыли строки, которые вы не хотите включать? (Может быть, есть что-то смешное в том, как это делается, что означает, что Excel не считает, что '.Hidden' является' True'.) – YowE3K
@ YowE3K - Я просто использую фильтр. У меня есть данные в столбцах, и я отфильтровываю данные на основе столбца. У меня строка '2' отфильтрована и выполняется'? Rows (2) .Hidden' в Immediate Window правильно вернулось «True». У меня также нет событий типа «Worksheet_Change», единственный макрос - тот, о котором я спрашиваю. – BruceWayne
Я попытался вручную скрывать строки и использовать фильтр, чтобы скрыть строки. Оба метода работают так, как ожидалось. – YowE3K