Как просуммировать столбец в Excel или ГуглТаблицах?
Есть таблица:
Первый столбец - дата и время, второй - Фамилия, третий - показатель для сумирования.
18.05.2021 15:30 | Иванов | 2
18.05.2021 17:00 | Иванов | 3
18.05.2021 12:00 | Петров | 4
18.05.2021 12:00 | Сидоров | 6
17.05.2021 13:30 | Иванов | 2
Как просуммировать значения за выбранную дату (например 18.05.2021), последние по Фамилии. (т.е. у Иванова в расчёт возьмется только данные за 17:00).
По примеру результат должен получится: 13
Дату за которую происходит вычисления я получаю без времени. В таблице со временем.
С учётом как гугл таблицы работают с датами. Вышло так:
=СУММЕСЛИМН(Data!C:C; Data!A:A;">17.05.2022";Data!A:A;"<19.05.2022")
Могу просуммировать за число. Но как выкинуть повторные данные (за 15:30 от Иванова)?
=query(Data!B:D; "SELECT B, C, TODATE(C), SUM(D) WHERE TODATE(C) = date '"&ТЕКСТ(A2; "yyyy-MM-DD")&"' GROUP BY B, C ORDER BY C DESC";0)
18.05.2021 17:00 | Иванов | 3
18.05.2021 15:30 | Иванов | 2
18.05.2021 12:00 | Петров | 4
18.05.2021 12:00 | Сидоров | 6
Остается вопрос как просуммировать последние записи за день от каждого человека.
т.е., результирующий набор должен быть таким
18.05.2021 17:00 | Иванов | 3
18.05.2021 12:00 | Петров | 4
18.05.2021 12:00 | Сидоров | 6
ITF, сможете сами повторить сложную неэлегантность, которую я делал?
Для Гугл Таблиц:
SORT — получаем новый диапазон с отсортированным по дате и времени столбцом.
UNIQUE — получаем неповторяющийся список фамилий (проблема: однофамильцы с одинаковыми инициалами).
По списку фамилий п. 2 из отсортированного диапазона п. 1 с помощью VLOOKUP, MATCH+INDEX или XLOOKUP нужные числа. (Формулу нужно «протянуть» вдоль всего списка фамилий.)
SUM — суммируем.
Отредактировано
Из перечня выпал FILTER, хотя я его использовал.
Александр,
Из-за функции ВПР, немного поменял структуру (хотя обрабатывая массив через querry можно и не менять)
Иванов 18.05.2021 15:30:00 2
Иванов 18.05.2021 17:00:00 3
Петров 18.05.2021 12:00:00 4
Сидоров 18.05.2021 12:00:00 6
Иванов 17.05.2021 13:30:00 2
Т.е. поменял колонки местами - дату и фамилию.
в D1 - у меня дата за которую произвожу поиск
Через формулы сделал.
Не стал формулу под пример редактировать, но объясню на словах.
1. В принципе SORT и FILTER понятно, даёт мне отсортированный по дате массив за нужное число
2. Далее Функция ВПР - поиск значения по первому столбцу диапазона. По умолчанию возвращает первое попавшееся (для того и нужна была сортировка). Но т.к. фамилий много, оборачиваем в UNIQUE.
3. ARRAYFORMULA позволяет применить ВПР для каждой уникальной строки и найти первое значение из получившегося набора.
4. Есть (по примеру) фамилии, по которым за сегодня нет данных, тогда ArrayFormula выдаёт ошибку "не найдено значение", для этого мы вместо ошибки выводим 0.
Например если я буду искать за 17 число данные из исходной таблицы, то по Сидорову и Петрову будет ошибка.
5. Ну и в итоге суммируем что получилось.
Полностью через query видимо не получится решить задачку...
Пускай в примере есть ещё одна ячейка для даты по которой подбивается сумма D1
Поменял колонки дату и фамилию с местами, что бы фамилии были первой колонкой.
В формуле СУММЕСЛИМН не получается на ходу преобразовывать дату.
Выше написал что здесь уже нашел решения по сумме, но как выкинут повторные записи оттуда и брать только последние по времени?