Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wie am schnellsten eindeutige Werte ermitteln?

Forumthread: Wie am schnellsten eindeutige Werte ermitteln?

Wie am schnellsten eindeutige Werte ermitteln?
Holger,
Hallo,
da ich es mit einer gewaltigen Menge an Daten zu tun habe, muss ich alles auf den Prüfstand stellen.
In der Spalte B will ich alle werte ermitteln, die vorkommen.
Am besten ohne durch alle Zeilen schleifen zu müssen. Gibt es hierfür eine Lösung?
Beispiel:
  • Others Herbst Herbst Others Sommer Sommer Sommer Sommer
  • soll liefern Others, Herbst,Sommer
    Geht dies?
    Anzeige
    AW: Mit einer Pivottabelle...
    10.02.2011 14:52:45
    JoWE
    Hallo Holge,
    ... oder mit dem Spezialfilter - Liste an anderer Stelle filtern - keine Duplikate
    Gruß
    Jochen
    AW: Mit einer Pivottabelle...
    10.02.2011 14:55:17
    Holger,
    Hallo Jochen,
    Pivot zu kompliziert, SpezialFilter wäre eine Möglichkeit, braucht aber auch
    einige Codezeilen um das aufzubauen.
    Gibt es nichts Besseres?
    Pivottabelle...zu kompliziert bei Excel gut?
    10.02.2011 15:02:44
    JoWE
    Anzeige
    Pivottabelle...zu kompliziert bei Excel gut?
    10.02.2011 15:02:56
    JoWE
    AW: Pivottabelle...zu kompliziert bei Excel gut?
    10.02.2011 15:06:23
    Holger,
    Es geht nicht um den Anspruch, sondern darum, dass ich im code
    keine PivotTabelle aufbauen will, nur um eindeutige Werte zu finden.
    AW: Wie am schnellsten eindeutige Werte ermitteln?
    10.02.2011 14:56:34
    Rudi
    Hallo,
    ohne Schleife geht's imho nicht.
    Sub ttt()
    Dim oWert As Object, rngC As Range
    Set oWert = CreateObject("Scripting.dictionary")
    For Each rngC In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
    oWert(rngC.Value) = 0
    Next
    MsgBox Join(oWert.keys, vbLf)
    End Sub
    

    Gruß
    Rudi
    Anzeige
    Ok
    10.02.2011 15:07:14
    Holger,
    Hallo Rudi,
    ok, dann werde ich es auch mit einer Schleife lösen.
    Danke für deine Hilfe.
    Beschleunigung
    10.02.2011 15:54:00
    Rudi
    Hallo,
    erst die Spalte in ein Array. 5x schneller.
    Sub ttt1()
    Dim oWert As Object, i As Long, Tmp
    Set oWert = CreateObject("Scripting.dictionary")
    Tmp = Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
    For i = 1 To UBound(Tmp)
    oWert(Tmp(i, 1)) = 0
    Next
    MsgBox Join(oWert.keys, vbLf)
    End Sub
    

    Gruß
    Rudi
    Anzeige
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Eindeutige Werte in Excel ermitteln


    Schritt-für-Schritt-Anleitung

    Um eindeutige Werte in einem Excel-Arbeitsblatt zu ermitteln, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen. In diesem Beispiel verwenden wir Excel VBA, um die Werte in der Spalte B zu erkennen.

    1. Öffne dein Excel-Arbeitsblatt.

    2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

    3. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

    4. Kopiere den folgenden Code in das Modul:

      Sub EindeutigeWerte()
         Dim oWert As Object, rngC As Range
         Set oWert = CreateObject("Scripting.dictionary")
         For Each rngC In Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp))
             oWert(rngC.Value) = 0
         Next
         MsgBox Join(oWert.keys, vbLf)
      End Sub
    5. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

    6. Drücke ALT + F8, wähle EindeutigeWerte aus und klicke auf Ausführen.

    Der Code zeigt nun eine Meldung mit allen eindeutigen Werten aus der Spalte B an.


    Häufige Fehler und Lösungen

    • Fehler: "Objekt erforderlich"

      • Stelle sicher, dass Du die richtigen Objekte verwendest und dass die Daten in der korrekten Spalte stehen.
    • Fehler: Leere Werte werden angezeigt

      • Überprüfe die Daten in der Spalte auf leere Zellen. Du kannst eine zusätzliche Bedingung einfügen, um leere Werte zu ignorieren.
    • Leistungseinbußen bei großen Datenmengen

      • Wenn Du mit einer großen Datenmenge arbeitest, erwäge die Verwendung eines Arrays, um die Verarbeitung zu beschleunigen. Siehe dazu die alternative Methode.

    Alternative Methoden

    Eine einfache Methode, um die excel eindeutige werte ohne VBA zu ermitteln, ist die Verwendung des Spezialfilters:

    1. Markiere die Daten in deiner Spalte.
    2. Gehe zu Daten und wähle Erweiterte Filter.
    3. Wähle Kopie an einen anderen Ort und aktiviere die Option Keine Duplikate.
    4. Wähle den Zielbereich aus, um die eindeutigen Werte zu speichern.

    Eine weitere effiziente Möglichkeit ist die Verwendung von Formeln, wie =EINDEUTIGE() in neueren Excel-Versionen.


    Praktische Beispiele

    Nehmen wir an, Du hast folgende Daten in Spalte B:

    Others
    Herbst
    Herbst
    Others
    Sommer
    Sommer
    Sommer
    Sommer

    Wenn Du den oben genannten VBA-Code ausführst, erhältst Du das Ergebnis:

    Others
    Herbst
    Sommer

    Für eine Excel-Version, die die EINDEUTIGE()-Funktion unterstützt, kannst Du einfach die folgende Formel verwenden:

    =EINDEUTIGE(B2:B100)

    Diese Formel listet alle eindeutigen Werte aus dem angegebenen Bereich auf.


    Tipps für Profis

    • Verwende Arrays für bessere Leistung: Wenn Du mit großen Datensätzen arbeitest, kannst Du die Werte in ein Array laden, um die Verarbeitung zu beschleunigen. Beispiel:

      Sub EindeutigeWerteArray()
         Dim oWert As Object, i As Long, Tmp
         Set oWert = CreateObject("Scripting.dictionary")
         Tmp = Range(Cells(2, 2), Cells(Rows.Count, 2).End(xlUp)).Value
         For i = 1 To UBound(Tmp)
             oWert(Tmp(i, 1)) = 0
         Next
         MsgBox Join(oWert.keys, vbLf)
      End Sub
    • Nutze das Herbstblatt: Wenn Du regelmäßig mit saisonalen Daten wie einem herbst arbeitsblatt arbeitest, erstelle eine Vorlage, um die Daten konsistent zu verarbeiten.


    FAQ: Häufige Fragen

    1. Wie kann ich die eindeutigen Werte automatisch aktualisieren?
    Du kannst die oben genannten VBA-Skripte in eine Schaltfläche einfügen, um die Werte bei Bedarf zu aktualisieren.

    2. Funktioniert das auch in älteren Excel-Versionen?
    Ja, das VBA-Skript funktioniert in den meisten Excel-Versionen, die VBA unterstützen. Achte jedoch darauf, dass die EINDEUTIGE()-Funktion nur in neueren Versionen verfügbar ist.

    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