it-swarm.com.de

Zusammenfassung nach Jahr und Monat zusammenfassen

Ich habe ein Arbeitsblatt Movements mit zwei Feldern:

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

Ich möchte in einem anderen Arbeitsblatt MonthSum, das die Summen der Daten in der Spalte Betrag enthält, gruppiert nach Jahr + Monat der Spalte Datum

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

Ich möchte nicht die Zellen angeben, in denen die Kalkulationstabelle zusammengefasst werden muss. Ich möchte, dass eine generische Formel meine Daten pro Monat und Jahr gruppiert. Wenn ich in einer MySQL-Datenbank wäre, würde ich einfach Folgendes tun:

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

Ich brauche die Lösung, um an Google-Spreadsheets zu arbeiten. 

Ich denke, mögliche Lösungen wären SUMIF oder Pivot-Tabellen oder Google Spreadsheets QUERY function .

41
nulll

Sie können es mit einer Matrixformel tun, ich setze die Formel in A2 und in A1, ich gebe die Monatsnummer ein:

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

Sehen Sie das doc in Aktion in Google Spreadsheet

[BEARBEITEN] Wenn Sie Jahr und Monat wünschen:

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

Dafür gibt es Pivot-Tabellen .

Ich habe ein Beispiel mit Ihren Daten erstellt.

Fügen Sie zunächst eine Spalte hinzu, um das Datum als Ihre monatliche Zeichenfolge zu formatieren, z. B. "2009-01" mit der Formel:

TEXT(A2, "YYYY-MM")

enter image description here


Markieren Sie dann die Daten und wählen Sie "Daten"> "Pivot-Tabellenbericht ...".

enter image description here


Wählen Sie für Zeilen "Monat"

enter image description here


Wählen Sie für Werte "Menge"

enter image description here


TADA! Das ist es!

enter image description here

Eine kurze Übersicht über Pivot-Tabellen finden Sie unter dieser Google-Blog-Beitrag .

87
matt burns

Lassen Sie mich zusätzlich zum Beitrag von JMax die folgende Formel mit der QUERY-Funktion präsentieren ...

=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' ")

Anmerkungen: Ich habe angenommen, dass die Originaldaten in Sheet3 Vorhanden sind, und mein Ergebnis zeigt die Kombination aus Jahr und Monat als JJJJ.mm anstelle von JJJJ-MM Ich habe eine Illustration erstellt:

 yogi

11
Yogi Anand

Die Antwort von Matt Burns und Cœur ist ziemlich genau und ich möchte einen Kommentar hinzufügen (ich habe ihn nicht im Kommentarbereich hinzugefügt, da er ziemlich lang ist).

Sie können stattdessen diese Formel verwenden: DATE(YEAR(A2);MONTH(A2);1), um nach Jahr und Monat zu gruppieren.

Auf diese Weise können Sie Werte als Datumsangaben beibehalten und somit jede Art von Datumsformatierung oder Sortierung in Ihrer Pivot-Tabelle anwenden.


Erklärung, die Sie überspringen können:

Anstelle von TEXT(A2, "YYYY-MM") wird der Wert in Text konvertiert und somit die Freiheit hinsichtlich weiterer Datumsmanipulationen aufgehoben.

DATE(YEAR(A2);MONTH(A2);1) entferne den Tag und die Uhrzeit vom Datum, so dass zum Beispiel 2018/05/03 und 2018/05/06 beide 2018/05/01 werden, was noch ein Datum ist, das dann möglich ist gruppiert werden.

Durch Anwenden eines Formats "JJJJ-MM" direkt auf dem Pivot-Tisch erzielen Sie dasselbe Ergebnis.

1
user1707414

Sie müssen einen Array-Ansatz verwenden. Wie man Arrays kombiniert, erfahren Sie hier https://stackoverflow.com/a/42488671/1393023

Vor allem QUERY

Es ist einfach und transparent

=QUERY(
  ARRAYFORMULA({TEXT(Movements!A:A,"YYYY-MM"),Movements!B:B}),
  "select Col1,sum(Col2) group by Col1"
)

Zweitens ARRAYFORMULA(SUMIF)

Kombinieren Sie einfach die Funktionen zu einer Kette

=SORT(UNIQUE(FILTER(
  {
    TEXT(Movements!A2:A,"YYYY-MM"),
    SUMIF(EOMONTH(Movements!A2:A,1),EOMONTH(Movements!A2:A,1),Movements!B2:B)
  },
  LEN(Movements!B2:B)
)),1,1)

Mein Beispiel

0
oshliaer

Ich habe mit einem ähnlichen Problem gearbeitet. Ich fand diese Formel gut zu funktionieren.

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

In Zelle A2 habe ich den gewünschten Monat zusammengezählt.

0
kalm42