Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

19 Апрель 2021, 08:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Сумма ячеек по метке  (Прочитано 2250 раз)
0 Пользователей и 1 Гость смотрят эту тему.
KSumatokhin
Участник
**
Offline Offline

Пол: Мужской
Расположение: Калининград
Сообщений: 9


« Ответ #56827: 13 Декабрь 2020, 16:28 »

Здравствуйте уважаемые форумчане,

Нужно написать функцию, которая должна проанализировать два столбца, один с названием, второй с числами,
и просуммировать только те числа, названия которых соответствуют "метке".
Упрощенно - просуммировать ячейки по правилу "метка".

Допустим у вас есть таблица:
Начало   Конец   Сумма
      
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, то сумма автоматом пересчитается. Не нужно указывать диапазон. Можно копировать строками.

* Пример.ods (14.39 Кб - загружено 5 раз.)
Записан
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!