Страницы: 1
RSS
Диапазон только видимых ячеек.
 
Добрый день, не могу сообразить как в аргумент функции передать Range только по видимым ячейкам  Код берёт средние значения из уникальных строк и суммирует их. Как бы сделать так, что бы при фильтрации этих строк, формула не учитывала скрытые строки?


Код
Public Function fsumm(rng As Range)

Dim q As New Collection, arr()
   
    arr() = rng; '.Rows.SpecialCells(xlCellTypeVisible) не работает
    
    On Error Resume Next
        For i = 2 To UBound(arr())
            q.Add arr(i, 2), arr(i, 1)
    Next
    
 For Each f In q
   m = m + f
  Next
fsumm = m
End Function

Изменено: Глеб - 24.01.2022 10:57:22
 
Глеб Проверить сейчас не смогу батарея ноута на исходе а света нет
Попробуйте arr() заменить на arr Уберите круглые скобки
 
Не помогает, падает в ошибку, либо считает 0. В зависимости от того, в каком arr скобки убирать
 
Евгений Смирнов, не

Глеб, здравствуйте
Только циклом по областям
можно ещё, конечно, скопировать только видимые на новый лист и взять оттуда махом без [видимого] цикла, но будет медленнее
Получение массива из диапазона листа, игнорируя скрытые ячейки
Изменено: Jack Famous - 24.01.2022 11:19:06
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Глеб Можно так
Код
Function fsumm2(Rng As Range)
    Dim q As New Collection
On Error Resume Next
    For i = 2 To Rng.Rows.Count
If Rng.Rows(i).Hidden = False Then q.Add Rng.Rows(i).Cells(2), Rng.Rows(i).Cells(1)
    Next
For Each f In q
   m = m + f
Next
    fsumm2 = m
End Function

С методом SpecialCells не получиться почитайте это Глюк работы в UDF методов SpecialCells и FindNext

 
Вариант по названию темы:
Диапазон только видимых ячеек массива A1:A50 Листа 1 получить на Листе 2:
Код
=ФИЛЬТР(Лист1!A1:A50;ПРОМЕЖУТОЧНЫЕ.ИТОГИ(103;ДВССЫЛ("Лист1!A"&СТРОКА(1:50)))=1)
Изменено: Тимофеев - 24.01.2022 18:43:06
Страницы: 1
Наверх