Excel - Ein Makro zum Gruppieren nach Spalten- und Summenwerten

Die Microsoft Office-Software umfasst Microsoft Excel, eine Tabellenkalkulationsanwendung mit Grafiktabellen, Berechnungen, einer Makro-Programmiersprache namens VBA (Visual Basics for Applications) und Pivot-Tabellen. Eine Pivot-Tabelle wird zum Auflisten von Daten verwendet. Diese Daten werden erkannt und zusammengefasst, um bestimmte Ergebnisse zu erhalten. Ein Makro stellt eine Liste von Befehlen oder Aktionen dar, um längere Daten oder sich wiederholende Aufgaben in Excel Office Software zu beschleunigen. Dies kann ausgeführt werden, wann immer Sie die Aufgabe ausführen müssen. Es übernimmt die Werte, führt die erforderliche Operation aus und gibt den Wert entsprechend zurück. Wenn Sie ein Makro schreiben möchten, um es nach Spalte und Summenwert zu gruppieren, starten Sie das Makro einfach mit den entsprechenden Befehlen.

Problem

Ich muss ein Makro für das folgende Beispiel schreiben:

 Artikel Menge Länge A 1 100 A 1 100 B 2 200 B 1 100 B 5 100 C 4 200 C 2 100 C 1 200 C 3 100 

Grundsätzlich möchte ich nach Spalte A (dh Artikel) und Spalte C (dh Länge) gruppieren und außerdem die Summe jeder Längenänderung für einen Artikel addieren. In diesem Fall lautet das Ergebnis auf dem neuen Blatt wie folgt:

 Artikel Menge Länge A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Hoffe das ergibt Sinn.

Kann mir jemand helfen, ein Excel-Makro dafür zu schreiben?

Lösung

Versuche dies

Annahme:

  • 1. Wenn Sie ein Makro starten, ist das Blatt, von dem die Daten kopiert werden sollen, das aktive Blatt
  • 2. Eine leere Zelle in Spalte A zeigt das Ende der Daten an
  • 3. Sie möchten auf Blatt 3 einfügen (im Makro korrigieren, wenn dies nicht der Fall ist)

 Sub consolidateData () Dim lRow As Long Dim ItemRow1, ItemRow2 As String Dim lengthRow1, lengthRow2 As String Columns ("A: C"). Select Selection.Copy Sheets ("Sheet3"). Select Range ("A1"). Select ActiveSheet .Paste Cells. Select Selection. Sort _ Key1: = Range ("A2"), Order1: = xlAscending, _ Key2: = Range ("C2"), Order2: = xlDescending, _ Header: = xlYes, OrderCustom: = 1, _ MatchCase: = False, Orientation: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 Do While (Zellen (lRow, 1) "") ItemRow1 = Zellen (lRow, "A") ItemRow2 = Zellen (lRow + 1, "A") lengthRow1 = Zellen (lRow, "C") lengthRow2 = Zellen (lRow + 1, "C") If ((ItemRow1 = ItemRow2) And (lengthRow1 = lengthRow2)) Then Cells (lRow, "B") = Zellen (lRow, "B") + Zellen (lRow + 1, "B") Zeilen (lRow + 1). Anderenfalls löschen lRow = lRow + 1 End If Loop End Sub 

Hinweis

Danke an rizvisa1 für diesen Tipp im Forum.

Vorherige Artikel Nächster Artikel

Top-Tipps