Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA 10 größten Werte aus Spalte suchen

VBA 10 größten Werte aus Spalte suchen
07.05.2019 15:17:32
Schmidt
Hi,
bin neu, wie man sicherlich sieht und merkt.
Habe ein leidliches Problem mit einem kleinen Versuch in VBA.
Ich möchte Spalte B (ab Zeile 5), in welcher die Anzahl von Startvorgängen aufgelistet ist, auswerten und die 10 größten Werte heraussuchen. Dazu sollen die entsprechenden Werte aus Spalte A (Vorgangsnummern) ausgegeben werden. Ich habe das mit folgendem code gelöst.

Public Sub top10Gesamtzahlen()
Dim i As Integer
Dim rngSrc As Range
Dim top(1 To 10) As Double
Dim zeile(1 To 10) As Integer
With ausgabe
Set rngSrc = ThisWorkbook.Worksheets("Vergleichsliste").Range("b5:b100")
For i = 1 To 10
top(i) = Application.WorksheetFunction.Large(rngSrc, i)
'         zeile(i) = rngSrc.Find(What:=top(i), LookIn:=xlValues, LookAt:=xlWhole,  _
SearchDirection:=xlNext).Row
zeile(i) = Application.WorksheetFunction.Match(top(i), rngSrc, 0) + 4
Next
End With
For i = 1 To 10
ThisWorkbook.Worksheets("Ausgabe").Cells(2, 3 + i) = ThisWorkbook.Worksheets(" _
Vergleichsliste").Cells(zeile(i), 1)
ThisWorkbook.Worksheets("Ausgabe").Cells(3, 3 + i) = top(i)
Next
End Sub
Mein Problem ist, dass ich an dieser Stelle bei Dopplungen der Anzahl an Startvorgängen immer nur eine Vorgangsnummer ausgegeben bekomme. Hier ein Bsp. der Liste.
A B
Z5 1 5
Z6 2 7
Z7 3 5
Z8 4 6
....
Ausgegeben bekomme ich hier:
3 4 1 1 ...
7 6 5 5 ...
Habe es mit .Find und .Match probiert aber beides führt zum gleichen Resultat.
Wie kann ich das umgehen und bei gleichen Anzahlen auch die verschiedenen dazugehörigen Zeilenwerte bekommen? Hat da jemand ne Idee für mich?
Gruß
Marc
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 10 größten Werte aus Spalte suchen
07.05.2019 15:50:33
Daniel
Hi
sortiere doch die Liste nach Spalte B und nimm die ersten 10 Zellen aus Spalte A.
Gruß Daniel
ohne Sortieren
07.05.2019 16:05:40
Daniel
wenn du nicht umsortieren magst, dann filtere doch einfach mit dem Autofilter nach den Top10 werten und lass die schleife zum einlesen die sichtbaren Zellen laufen.
Gruß Daniel
AW: ohne Sortieren
07.05.2019 16:11:58
Schmidt
Hi Daniel,
danke schon mal für deine Antwort aber ich möchte hier so viel wie möglich automatisieren, da die Ergebnisse als Grundlage für weitere Auswertungen dienen und in einem anderen Sub wieder aufgerufen werden. Des Weiteren ist Alles in Allem in einer riesigen Schleife verpackt.
Anzeige
AW: ohne Sortieren
07.05.2019 16:20:09
Daniel
es spricht nichts dagegen, die von mir beschriebenen Schritte auch automatisiert ausführen zu lassen.
alles was man in Excel von Hand machen kann, lässt sich auch automatisiert per Makro ausführen.
Der Recorder ist dein Freund.
Gruß Daniel
AW: ohne Sortieren
08.05.2019 12:17:12
Schmidt
Hi Daniel,
ja, OK. Ich lass mich ja schon dazu hinreißen, es auf die einfache Weise zu lösen. Meine Anfrage hat sich dann damit auch erledigt.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Die 10 größten Werte in Excel mit VBA finden


Schritt-für-Schritt-Anleitung

Um die 10 größten Werte aus einer Liste in Excel zu finden und anzuzeigen, kannst du folgendes VBA-Skript verwenden:

Public Sub top10Gesamtzahlen()
    Dim i As Integer
    Dim rngSrc As Range
    Dim top(1 To 10) As Double
    Dim zeile(1 To 10) As Integer
    With ausgabe
        Set rngSrc = ThisWorkbook.Worksheets("Vergleichsliste").Range("b5:b100")
        For i = 1 To 10
            top(i) = Application.WorksheetFunction.Large(rngSrc, i)
            zeile(i) = Application.WorksheetFunction.Match(top(i), rngSrc, 0) + 4
        Next
    End With
    For i = 1 To 10
        ThisWorkbook.Worksheets("Ausgabe").Cells(2, 3 + i) = ThisWorkbook.Worksheets("Vergleichsliste").Cells(zeile(i), 1)
        ThisWorkbook.Worksheets("Ausgabe").Cells(3, 3 + i) = top(i)
    Next
End Sub
  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Starte das Makro über „Entwicklertools“ > „Makros“ und wähle top10Gesamtzahlen.

Häufige Fehler und Lösungen

  • Problem: Bei Dopplungen in den Werten wird nur eine Vorgangsnummer ausgegeben.

    • Lösung: Verwende die Large-Funktion, um die Werte zu extrahieren. Um die Zeilennummer zu erhalten, nutze die Match-Funktion, aber beachte, dass dies nur die erste Übereinstimmung gibt. Um alle zu erfassen, musst du eine Schleife implementieren.
  • Problem: Makro lässt sich nicht ausführen.

    • Lösung: Stelle sicher, dass die Makros in deinen Excel-Einstellungen aktiviert sind.

Alternative Methoden

Wenn du nicht auf VBA zurückgreifen möchtest, kannst du auch die integrierten Excel-Funktionen nutzen:

  1. Sortieren: Sortiere die Daten in Spalte B absteigend und kopiere die ersten 10 Werte aus Spalte A.
  2. Autofilter: Aktiviere den Autofilter auf Spalte B und filtere nach den höchsten Werten. Kopiere die sichtbaren Zellen aus Spalte A.

Praktische Beispiele

Angenommen, du hast folgende Daten in Excel:

Vorgangsnummer Startvorgänge
Z5 5
Z6 7
Z7 5
Z8 6

Mit dem oben genannten VBA-Skript erhältst du die 10 größten Werte und die zugehörigen Vorgangsnummern in einem neuen Arbeitsblatt.


Tipps für Profis

  • Wenn du die Top 3 Werte anzeigen möchtest, kannst du den Code leicht anpassen, indem du die Range für top und zeile änderst.
  • Nutze den Debug-Modus im VBA-Editor, um Probleme schneller zu identifizieren.
  • Experimentiere mit der Large-Funktion, um mehr als 10 Werte herauszufinden, falls nötig.

FAQ: Häufige Fragen

1. Wie kann ich die höchsten Werte aus einer Liste in Excel finden?
Du kannst die LARGE-Funktion in Kombination mit anderen Excel-Funktionen oder VBA verwenden, um die höchsten Werte zu ermitteln.

2. Kann ich die Werte auch ohne VBA finden?
Ja, du kannst die Werte auch einfach sortieren oder den Autofilter benutzen, um die höchsten Werte anzuzeigen.

3. Wie gehe ich mit doppelten Werten um?
Verwende eine Schleife, um alle Zeilen mit dem gleichen Wert zu erfassen oder über die Filterfunktion, um die obersten Werte zu finden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige