Подтвердить что ты не робот

Суммируйте группировку по годам и месяцам

У меня есть рабочий лист Движения с двумя полями:

mydate      | amount
2009-01-01  | 10.00
2009-01-02  | 13.00
2009-02-01  | 11.00
2009-02-05  | 12.00
2009-02-08  | 52.00

Я хочу иметь в другом листе MonthSum, который отображает суммы данных в столбце, сгруппированные по году + месяца по дате столбца:

mydate      | amount
2009-01     | 23.00
2009-02     | 75.00

Я не хочу указывать ячейки, где должна сводиться таблица, я хочу, чтобы общая формула группировала мои данные в месяц + год. Если бы я был в базе данных MySQL, я бы просто сделал:

SELECT DATE_FORMAT('%Y-%m', mydate), SUM(amount) 
FROM mytable GROUP BY DATE_FORMAT('%Y-%m', mydate)

Мне нужно решение для работы с таблицами Google.

Я думаю, что возможные решения будут использовать SUMIF или сводные таблицы или таблицы Google QUERY функция.

4b9b3361

Ответ 1

Вы можете сделать это с помощью формулы массива, я ставлю формулу в A2 и в A1, я поставлю номер месяца:

=ARRAYFORMULA(SUMPRODUCT(1*(MONTH(Sheet1!$A$2:$A$6)=A1)*Sheet1!$B$2:$B$6))

См. doc в действии в Таблице Google

[EDIT] Если вы хотите как год, а месяц:

=ARRAYFORMULA(SUMPRODUCT(1*(YEAR(Sheet1!$A$2:$A$8)=A2)*(MONTH(Sheet1!$A$2:$A$8)=B2)*Sheet1!$B$2:$B$8))

Ответ 2

Вот для чего предназначены сводные таблицы.

Я создал пример, используя ваши данные.

Сначала добавьте столбец для форматирования даты в виде вашей ежемесячной строки, например "2009-01", с формулой:

TEXT(A2, "YYYY-MM")

enter image description here


Затем выделите данные и выберите "data" > "отчет сводной таблицы..."

enter image description here


Для строк выберите "месяц"

enter image description here


Для значений выберите "количество"

enter image description here


TADA! Что это!

enter image description here

Для краткого обзора сводных таблиц см. этот пост в блоге Google.

Ответ 3

в дополнение к вкладу от JMax, позвольте мне представить следующую формулу, используя функцию QUERY...

=query(index('Sheet3'!A:B); "select year(Col1)+(month(Col1)+1)/100,sum(Col2) where Col1 is not null group by year(Col1)+(month(Col1)+1)/100 label year(Col1)+(month(Col1)+1)/100 'mydate',sum(Col2) 'amount' ")

Примечания: Я предположил, что исходные данные приведены в Sheet3 и мой результат представляет год и месяц combinationas yyyy.mm вместо yyyy-mm Я создал иллюстрацию:

yogi

Ответ 4

Я работал с аналогичной проблемой. Я нашел эту формулу хорошо работать.

=SUMIF(ARRAYFORMULA(MONTH('Sheet1'!A:A)), A2, 'Sheet1'!B:B)

В ячейке A2 я помещаю месяц, который хотел получить.