Здравствуйте уважаемые форумчане,
Нужно написать функцию, которая должна проанализировать два столбца, один с названием, второй с числами,
и просуммировать только те числа, названия которых соответствуют "метке".
Упрощенно - просуммировать ячейки по правилу "метка".
Допустим у вас есть таблица:
Начало Конец Сумма T1 U1 S1 U1 N1 5 U1 N2 4 U1 N2 4 T1 U2 S2 U2 N1 2 U2 N2 6 U2 N3 4
|
Нужно в ячейку
S1 получить сумму по метке U1, т.е. нужно просуммировать ячейки по "метке" U1 по
всему столбцу вниз.
Сделать это нужно не указывая диапазоны и отдельные ячейки. С учетом того, что таблица может расти и уменьшаться.
Я решал это так. В конце столбца с именами ставил "метку"
END.
Т.е. дальше чем END таблица не может расти. В таблице могут постоянно добавляться строки, поэтому
нужно найти адрес метки
=ADDRESS(MATCH("END";A1:A2121;0);1;4)
Получив адрес извлекал номер строки строки =ROW(INDIRECT(E2))
Затем в отдельную ячейку (например D3) добавлял адрес диапазона, с которым нужно провести операцию, в данном случае просуммировать:
=ADDRESS(ROW(C3);COLUMN(C3);4)&":"&ADDRESS($F$2;COLUMN(C3);4)
Получается область от ячейки C3 до ячейки в столбце "C" со строкой на уровне "метки".
Затем еще один диапазон "названий" которые хранятся в столбце "А":
=ADDRESS(ROW(A3);1;4)&":"&$E$2
Ну а теперь само суммирование:
{=SUM(IF($B3=INDIRECT($E3);INDIRECT(D3);0))}
Во вложении файл с примером.
Как бы одной функцией упростить весь процесс описанный выше?
Хотелось бы иметь функцию типа =SUMLABLE("Метка";[кол-во])
Где [кол-во], это опция, указав которую функция ведет подсчет только в определенном количестве столбцов.
P.S. Работает только с OpenCalc. Удобно тем, что если поменять метки с U2 на U1, то сумма автоматом пересчитается. Не нужно указывать диапазон. Можно копировать строками.