Добрый день, не могу сообразить как в аргумент функции передать 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
Sub t(rng As Range)
Dim n&, a&
Dim x, tmp, aRes()
Set rng = rng.SpecialCells(xlCellTypeVisible)
ReDim aRes(1 To rng.Cells.Count)
For a = 1 To rng.Areas.Count
tmp = rng(a).Value: If Not IsArray(tmp) Then tmp = Array(tmp)
For Each x In tmp
n = n + 1: aRes(n) = x
Next x
Next a
Debug.Print Join(aRes, "•")
End Sub
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
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