Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Top 10 Ergebnisliste mit VBA

Top 10 Ergebnisliste mit VBA
08.03.2020 17:19:45
Trommy
Hallo zusammen,
ich muss aus einer nach Länge und Inhalt variablen Excel Liste eine
Top 10 Ergebnisliste -immer an die gleiche Stelle in der Tabelle- erzeugen und ablegen.
Dabei sollen die Top 10 Ergebnisse einer Spalte basierend auf der Wertesumme einer anderen Spalte ermittelt werden.
Früher habe ich das mit Pivot Tabellen gemacht, möchte es aber nun per VBA Coding - ohne Pivot - lösen.
zu beachten ist dabei, dass die Datenspalte, nach der der Top 10 Ausweis erfolgt, Mehrfacheinträge haben kann.
Zur Verdeutlichung habe ich eine vereinfachte Problemstellung in der Datei top10.xlsx hochgeladen.
Ziel wäre es die Top 10 Hersteller auf Basis der Summe der jeweiligen Stückzahlen zu ermittel und im Registerblatt "

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
keine Datei oT
08.03.2020 17:23:45
Hajo_Zi

AW: keine Datei oT
08.03.2020 17:26:31
Trommy
Du bist schneller als ich beim Uploaden gewesen... Jetzt ist die Datei auf dem Server...
AW: keine Datei oT
08.03.2020 17:27:59
Trommy
... jetzt ist die Datei auf dem Server
AW: keine Datei oT
08.03.2020 17:31:02
Hajo_Zi
Gut, Du möchtest den Link nicht in den Beitrag einfügen. Ich bin dann raus, da ich nicht auf dem Sewrver Suche.
Gruß Hajo
AW: keine Datei oT
08.03.2020 17:35:12
Trommy
...sorry, ich bin hier nicht so oft. Ich habe den Link noch einmal ergänzt
https://www.herber.de/bbs/user/135700.xlsx
Grüße
Trommy
Anzeige
AW: AW:Versuch mal
09.03.2020 15:50:53
Trommy
Hallo hary,
vielen Dank. Das passt für diese Datei super. Wie erwähnt habe ich im echten Leben eher mal eine ca. 3000 zeilige Datei(vaiiert aber), deren Länge und Inhalt aber variabel ist.
Meinst Du die Zeile
=SUMIF(RC[-4]:R[22]C[-4],RC[-1],RC[-3]:R[22]C[-3])
lässt sich auch verallgemeinert anpassen und wie müsste sie aussehen? Es wäre nett, wenn Du das noch aufklären könntest. Trommy
Anzeige
AW:mal ein anderer Ansatz
10.03.2020 08:18:22
hary
Moin Tommy
"verallgemeinert anpassen" versteh ich nicht.
Aber mal ein einfacher Ansatz. Siehe Anhang.
Hilfsspalte mit Formel und einfach den Filter(SpalteC)Zahlenfilter/Top10 nutzen.
https://www.herber.de/bbs/user/135736.xlsx
gruss hary
AW: AW:mal ein anderer Ansatz
10.03.2020 10:34:58
Trommy
Hallo hary,
vielen Dank, aber die Makro Lösung war schon nah dran.
Leider funktioniert das Makro ab der Zeile "with wks.sort" nicht mehr richtig.
Die Werte werden nach "apply" nicht mehr vollständig summiert.
Das wiederum liegt an der erwähnten Zeile
=SUMIF(RC[-4]:R[22]C[-4],RC[-1],RC[-3]:R[22]C[-3]).
Diese "rutscht" den relevanten Datenbereich immer weiter nach unten. Daher meine Frage, ob man diese Zeile so definiert kriegt, dass sie für den jeweiligen Emittenten gilt, aber dann immer den gesamten Datenbereich nach dern Werten abfragt. Ich hoffe, Du verstehst was ich meine. Ansonsten ein Beispiel:
Vor dem "sortieren:
Merceds: 150 Stück (richtig), Datenbereich A2:B24
Nach dem Sortieren:
Mercedes: 100 Stück (falsch), Datenbereich (A3:B24)
Die Lösung wäre, wenn der Datenbereich immer von Zeile 2 bis zum Rows.count.end(xlup) abgeprüft wird, also immer der gesamte (variabel sich ändernde) Datenbereich.
Grüße
trommy
Anzeige
AW: AW:mal ein anderer Ansatz
10.03.2020 11:32:31
hary
Moin Tommy
Formel war falsch. Hab ich geaendert.
Zusaetzlich Fornel in Werte umgewandelt.
Probier jetzt mal in deiner Bsp.-Mappe.
Sub Meine_Top10()
Dim wks As Worksheet
Application.ScreenUpdating = False
Set wks = Worksheets("Basisdaten")
wks.Range("A2:A" & wks.Cells(Rows.Count, 1).End(xlUp).Row).Copy wks.Range("D2")
wks.Range("D2:D" & wks.Cells(Rows.Count, 4).End(xlUp).Row).RemoveDuplicates Columns:=1,  _
Header:=xlNo
'-- Formel neu --
wks.Range("E2:E" & wks.Cells(Rows.Count, 4).End(xlUp).Row).FormulaR1C1 = "=SUMIF(C[-4],RC[- _
1],C[-3])"
'-- neu ersetzt Formel durch Wert --
wks.Range("E2:E" & wks.Cells(Rows.Count, 4).End(xlUp).Row).Value = wks.Range("E2:E" & wks. _
Cells(Rows.Count, 4).End(xlUp).Row).Value
wks.Sort.SortFields.Clear
wks.Sort.SortFields.Add Key:=Range("E2:E" & wks.Cells(Rows.Count, 5).End(xlUp).Row), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With wks.Sort
.SetRange wks.Range("D2:E" & wks.Cells(Rows.Count, 1).End(xlUp).Row)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
With wks.Range("D2:E" & wks.Cells(Rows.Count, 4).End(xlUp).Row)
.AutoFilter Field:=2, Criteria1:="10", Operator:=xlTop10Items
.SpecialCells(xlVisible).Copy
Worksheets("Top10").Cells(2, 1).PasteSpecial Paste:=xlPasteValues
.AutoFilter
.Clear
End With
End Sub

gruss hary
Anzeige
AW: AW:mal ein anderer Ansatz
10.03.2020 13:40:29
Trommy
Super. Das wird mir weiterhelfen. Vielen Dank für Deine Unterstützung !!
Grüße
trommy
AW: Top 10 Ergebnisliste mit VBA
09.03.2020 15:46:20
Trommy
Hallo hary,
vielen Dank. Das passt für diese Datei super. Wie erwähnt habe ich im echten Leben eher mal eine ca. 3000 zeilige Datei(vaiiert aber), deren Länge und Inhalt aber variabel ist.
Meinst Du die Zeile
=SUMIF(RC[-4]:R[22]C[-4],RC[-1],RC[-3]:R[22]C[-3])
lässt sich auch verallgemeinert anpassen und wie müsste sie aussehen? Es wäre nett, wenn Du das noch aufklären könntest. Trommy

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige