Startseite

Liste auswerten

Das Auswerten von Listen ist eine häufige Anforderung in Excel. Hier stelle ich ein Beispiel vor, in dem Artikelbezeichnungen, Einzelpreise und Mengen vorkommen. Jeder Artikel kann mehr als einmal vorkommen. Mit Hilfe des Makros wird in einem Ausgabebereich jeder vorkommende Artikel einmal gelistet. Zusätzlich wird die vorhandene Gesamtmenge des jeweiligen Artikels ermittelt und aufgelistet.
Um das zu vervollständigen, wird auch der Gesamtwert/preis der jeweiligen Artikel ausgegeben.
Im linken, weißen Bereich der Tabelle befindet sich die Ausgangsliste. Im rechten, grünen Bereich, ist die Auswertung zu sehen. Ich habe nur einen Teilbereich abgebildet, die Originalliste umfasst ca. 300 Zeilen.
 
 ABCDEFGH
1ArtikelnameEinzelpreisStück ArtikelnameEinzelpreisGesamtpreisStück gesamt
2Nord-Ost Matjeshering25,89 €12 Alice Mutton39,00 €1.092,00 €28
3Inlagd Sill19,00 €20 Aniseed Syrup10,00 €260,00 €26
4Louisiana Hot Spiced Okra17,00 €6 Boston Crab Meat18,40 €846,40 €46
5Gustaf's Knäckebröd21,00 €2 Camembert Pierrot34,00 €1.632,00 €48
6Chef Anton's Gumbo Mix21,35 €9 Carnarvon Tigers62,50 €3.125,00 €50
7Wimmers gute Semmelknödel33,25 €16 Chai18,00 €756,00 €42
8Outback Lager15,00 €5 Chang19,00 €475,00 €25
9Côte de Blaye263,50 €7 Chartreuse verte18,00 €720,00 €40
10Tourtière7,45 €11 Chef Anton's Cajun Seasoning22,00 €594,00 €27
11Sir Rodney's Scones10,00 €20 Chef Anton's Gumbo Mix21,35 €1.110,20 €52
12Carnarvon Tigers62,50 €2 Chocolade12,75 €510,00 €40
13Camembert Pierrot34,00 €23 Côte de Blaye263,50 €10.540,00 €40
14Sir Rodney's Scones10,00 €2 Escargots de Bourgogne13,25 €477,00 €36
15Tofu23,25 €6 Filo Mix7,00 €224,00 €32
16NuNuCa Nuß-Nougat-Creme14,00 €3 Fløtemysost21,50 €774,00 €36
17Queso Manchego La Pastora38,00 €13 Geitost2,50 €105,00 €42
18Boston Crab Meat18,40 €22 Genen Shouyu15,50 €868,00 €56
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Hier das Makro:
Option Explicit
Sub liste_auswerten()
' findet in einer Liste, die nicht sortiert sein muss
' alle vorkommenden Artikel. Diese werden mit dem Einzelpreis
' und der Gesamtanzahl in einer neuen Liste ausgegeben.
' Der Gesamtpreis wird errechnet.
' Geschrieben von Klaus-Dieter Oppermann, Oktober 2005
' Variablen deklarieren Dim iZiel As Integer ' Letzte gefüllte Zelle Dim az As Integer ' Zähler für Arrayfelder Dim i As Integer ' Schleifenzähler (Arrays füllen) Dim t As Integer ' Schleifenzähler (Gesamtpreise und Gesamtanzahl ermitteln) Dim arr() As Variant ' Array für Artikelausgabe Dim arr2() As Variant ' Array für Einzelpreisausgabe iZiel = Range("A65536").End(xlUp).Row ' Letzte gefüllte Zelle ermitteln (in Spalte A) ' Arrays dimensionieren ReDim arr(iZiel, 0) ' Artikel ReDim arr2(iZiel, 0) ' Einzelpreise ' Arrays mit Werten füllen For i = 2 To UBound(arr) ' laufe von Zeile 2 bis Tabellenende If Application.WorksheetFunction.CountIf(Range(Cells(i, 1), _ Cells(1, 1)), Cells(i, 1).Value) = 1 Then ' wenn Artikel das erste Mal vorkommt, dann ... arr(az, 0) = Cells(i, 1).Value ' ... Name in Array einlesen arr2(az, 0) = Cells(i, 2).Value2 ' ... Einzelpreis in Array einlesen az = az + 1 ' ... Zähler für Arrayfeld plus 1 End If ' Ende der Auswertung Next i ' Schleifenzähler plus 1 ' Inhalte ausgeben Range("E2", "E" & UBound(arr)) = arr ' Artikelnamen in Ausgabebereich schreiben With Range("F2", "G" & UBound(arr)) ' Ausgabbereich für Beträge .NumberFormat = "#,##0.00 $" ' Währungsformat festlegen .Value = arr2 ' Beträge eintragen End With ' Ende des Eintrags For t = 2 To az + 1 ' laufe von Zeile 2 bis Listenende Cells(t, 8) = Application.WorksheetFunction.SumIf(Range _ (Cells(232, 1), Cells(2, 1)), Cells(t, 5), Range("C2:C232")) ' Gesamtmenge berechnen Cells(t, 7) = Cells(t, 8) * Cells(t, 6) ' Gesamtpreis berechnen Next t ' Schleifenzähler plus 1 Columns("E:H").EntireColumn.AutoFit ' Spalten auf optimale Breite End Sub

Code eingefügt mit: Excel Code Jeanie
Eine Beispieltabelle habe ich im im Downloadbereichzur Verfügung gestellt.