Есть таблица с данными. Есть столбец с + и - . Задача: В желтой ячейке получить сумму первых 10 значений столбца О, но только если в столбце Р стоит +. Если стоит -, значит пропускаем и берем след. значение.
Function yyy#(r As Range)
Dim z, s#, m&, i&: z = r.Value
For i = 1 To UBound(z)
If z(i, 2) = "+" Then
s = s + z(i, 1): m = m + 1
If m = 10 Then yyy = s: Exit Function
End If
Next
End Function
Формула массива (ввод тремя клавишами): =СУММЕСЛИ(P2:ИНДЕКС(P:P;НАИМЕНЬШИЙ(ЕСЛИ(P2:P23="+";СТРОКА(P2:P23));10));"+";O2:ИНДЕКС(O:O;НАИМЕНЬШИЙ(ЕСЛИ(P2:P23="+";СТРОКА(P2:P23));10)))
Если вынести в отдельную ячейку определение последней нужной строки: =НАИМЕНЬШИЙ(ЕСЛИ(P2:P23="+";СТРОКА(P2:P23));10) (формула массива), то получим легкую конструкцию: =СУММЕСЛИ(P2:ИНДЕКС(P:P;Q24);"+";O2:ИНДЕКС(O:O;Q24))