webentwicklung-frage-antwort-db.com.de

Abrufen eindeutiger Werte in Excel nur mithilfe von Formeln

Kennen Sie in Excel eine Möglichkeit, eine Liste eindeutiger Werte anhand einer Formel zu "berechnen"?

ZB: Ein Bereich enthält Werte "red", "blue", "red", "green", "blue", "black"
und ich möchte als Ergebnis haben "red, "blue", "green", "black" + evtl. 2 weitere leere Zellen.

Ich habe bereits einen Weg gefunden, eine berechnete sortierte Liste mit SMALL oder LARGE in Kombination mit INDEX zu erhalten, aber ich möchte diese berechnete Sortierung auch OHNE VBA.

74
Patrick Honorez

Dies ist ein Oldie, und es gibt ein paar Lösungen, aber ich hatte eine kürzere und einfachere Formel als jede andere, die mir begegnet ist, und es könnte für jeden nützlich sein, der vorbeikommt.

Ich habe die Farbliste Colors (A2: A7) benannt und die Matrixformel in Zelle C2 ist dies (fest =):

=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")

Verwenden Sie Ctrl+Shift+Enter, Um die Formel in C2 einzugeben, und kopieren Sie C2 nach C3: C7.

Erklärung mit Beispieldaten {"rot"; "Blau"; "rot"; "Grün"; "Blau"; "schwarz"}:

  1. COUNTIF(Colors,"<"&Colors) gibt ein Array (# 1) mit der Anzahl der Werte zurück, die kleiner sind als jedes Element in den Daten {4; 1; 4; 3; 1; 0} (black = 0 Elemente kleiner, blue =) 1 Stück, rot = 4 Stück). Dies kann für jeden Artikel in ein Sortierwert übersetzt werden.
  2. COUNTIF(C$1:C...,Colors) gibt ein Array (# 2) mit 1 für jedes Datenelement zurück, das sich bereits im sortierten Ergebnis befindet. In C2 wird {0; 0; 0; 0; 0; 0} und in C3 {0; 0; 0; 0; 0; 1} zurückgegeben, da "schwarz" in der Sortierung an erster Stelle und in den Daten an letzter Stelle steht. In C4 {0; 1; 0; 0; 1; 1} bedeutet dies "schwarz" und alle Vorkommen von "blau" sind bereits vorhanden.
  3. Das SUM gibt den k-ten Sortierwert zurück, indem alle bereits vorhandenen kleineren Werte gezählt werden (Summe von Array # 2).
  4. MATCH findet den ersten Index des k-ten Sortierwerts (Index in Array # 1).
  5. Das IFERROR dient nur zum Ausblenden des Fehlers #N/A In den unteren Zellen, wenn die sortierte eindeutige Liste vollständig ist.

Um zu wissen, wie viele einzigartige Gegenstände Sie haben, können Sie dies verwenden reguläre Formel:

=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))
28
dePatinkin

Ok, ich habe zwei Ideen für dich. Hoffentlich bringt Sie einer von ihnen dahin, wo Sie hin müssen. Beachten Sie, dass der erste die Aufforderung ignoriert, dies als Formel zu tun, da diese Lösung nicht schön ist. Ich dachte, ich stelle sicher, dass der einfache Weg für dich wirklich nicht funktioniert; ^).

Verwenden Sie den Befehl Erweiterter Filter

  1. Wählen Sie die Liste aus (oder platzieren Sie Ihre Auswahl an einer beliebigen Stelle in der Liste und klicken Sie auf OK, wenn das Dialogfeld mit der Meldung angezeigt wird, dass Excel nicht weiß, ob Ihre Liste Überschriften enthält oder nicht).
  2. Wählen Sie Daten/Erweiterter Filter
  3. Wählen Sie entweder "Liste direkt filtern" oder "An einen anderen Ort kopieren".
  4. Klicken Sie auf "Nur eindeutige Datensätze".
  5. OK klicken
  6. Du bist fertig. Eine eindeutige Liste wird entweder an Ort und Stelle oder an einem neuen Ort erstellt. Beachten Sie, dass Sie diese Aktion aufzeichnen können, um ein einzeiliges VBA-Skript zu erstellen, das dann verallgemeinert werden kann, um in anderen Situationen für Sie zu funktionieren (z. B. ohne die oben aufgeführten manuellen Schritte).

Verwenden von Formeln (Beachten Sie, dass ich auf der Locksfree-Lösung aufbaue, um eine Liste ohne Lücken zu erhalten)

Diese Lösung funktioniert mit den folgenden Einschränkungen:

  • Die Liste muss sortiert sein (aufsteigend oder absteigend ist egal). Tatsächlich ist das ziemlich genau, da die Anforderung wirklich ist, dass alle ähnlichen Elemente zusammenhängend sein müssen, aber das Sortieren der einfachste Weg ist, diesen Zustand zu erreichen.
    • Es sind drei neue Spalten erforderlich (zwei neue Spalten für Berechnungen und eine neue Spalte für die neue Liste). Die zweite und dritte Spalte könnten kombiniert werden, aber das überlasse ich dem Leser als Übung.

      Hier ist die Zusammenfassung der Lösung:

      1. Berechnen Sie für jedes Element in der Liste die Anzahl der darüber liegenden Duplikate.
      2. Berechnen Sie für jede Stelle in der eindeutigen Liste den Index des nächsten eindeutigen Elements.
      3. Verwenden Sie schließlich die Indizes, um eine neue Liste mit nur eindeutigen Elementen zu erstellen.

      Und hier ein schrittweises Beispiel:

      1. Öffnen Sie eine neue Tabelle
      2. Geben Sie in a1: a6 das in der ursprünglichen Frage angegebene Beispiel ein ("rot", "blau", "rot", "grün", "blau", "schwarz").
      3. Liste sortieren: Fügen Sie die Auswahl in die Liste ein und wählen Sie den Sortierbefehl.
      4. Berechnen Sie in Spalte B die Duplikate:
        1. Geben Sie in B1 "= IF (COUNTIF ($ A $ 1: A1, A1) = 1,0, COUNTIF (A1: $ A $ 6, A1)" ein. Beachten Sie, dass das "$" in den Zellreferenzen sehr wichtig ist, da dies den nächsten Schritt (Auffüllen des Restes der Spalte) erheblich erleichtert. Das "$" gibt einen absoluten Verweis an, sodass beim Kopieren/Einfügen des Zelleninhalts der Verweis nicht aktualisiert wird (im Gegensatz zu einem relativen Verweis, der aktualisiert wird).
        2. Verwenden Sie Smart Copy, um den Rest der Spalte B auszufüllen: Wählen Sie B1. Bewegen Sie die Maus über das schwarze Quadrat in der rechten unteren Ecke der Auswahl. Klicken Sie und ziehen Sie bis zum Ende der Liste (B6). Wenn Sie loslassen, wird die Formel mit den aktualisierten relativen Referenzen in B2: B6 kopiert.
        3. Der Wert von B1: B6 sollte jetzt "0,0,1,0,0,1" sein. Beachten Sie, dass die Einträge "1" doppelte Einträge anzeigen.
      5. Erstellen Sie in Spalte C einen Index eindeutiger Elemente:
        1. Geben Sie in C1 "= Row ()" ein. Sie möchten eigentlich nur C1 = 1, aber wenn Sie Row () verwenden, funktioniert diese Lösung auch dann, wenn die Liste nicht in Zeile 1 beginnt.
        2. Geben Sie in C2 "= WENN (C1 + 1 <= REIHE ($ B $ 6), C1 + 1 + INDEX ($ B $ 1: $ B $ 6, C1 + 1), C1 + 1)" ein. Das "if" wird verwendet, um zu verhindern, dass ein #REF erzeugt wird, wenn der Index das Ende der Liste erreicht.
        3. Verwenden Sie Smart Copy, um C3: C6 auszufüllen.
        4. Der Wert von C1: C6 sollte "1,2,4,5,7,8" sein
      6. Erstellen Sie in Spalte D die neue eindeutige Liste:
        1. Geben Sie in D1 "= WENN (C1 <= REIHE ($ A $ 6), INDEX ($ A $ 1: $ A $ 6, C1)," ")" ein. Das "if" wird verwendet, um den Fall #REF zu stoppen, wenn der Index über das Ende der Liste hinausgeht.
        2. Verwenden Sie Smart Copy, um D2: D6 auszufüllen.
        3. Die Werte von D1: D6 sollten jetzt "schwarz", "blau", "grün", "rot", "", "" sein.

      Hoffe das hilft....

  • 53
    Drew Sherman

    Lösung

    Ich habe eine Funktion in VBA für Sie erstellt, damit Sie dies jetzt auf einfache Weise tun können.
    Erstellen Sie ein VBA-Codemodul (Makro), wie Sie in dieses Tutorial sehen können.

    1. Drücken Sie Alt+F11
    2. Klicken Sie auf Module in Insert.
    3. Code einfügen.
    4. Wenn Excel angibt, dass Ihr Dateiformat nicht makrofreundlich ist, speichern Sie es unter Excel Macro-Enabled In Save As.

    Quellcode

    Function listUnique(rng As Range) As Variant
        Dim row As Range
        Dim elements() As String
        Dim elementSize As Integer
        Dim newElement As Boolean
        Dim i As Integer
        Dim distance As Integer
        Dim result As String
    
        elementSize = 0
        newElement = True
    
        For Each row In rng.Rows
            If row.Value <> "" Then
                newElement = True
                For i = 1 To elementSize Step 1
                    If elements(i - 1) = row.Value Then
                        newElement = False
                    End If
                Next i
                If newElement Then
                    elementSize = elementSize + 1
                    ReDim Preserve elements(elementSize - 1)
                    elements(elementSize - 1) = row.Value
                End If
            End If
        Next
    
        distance = Range(Application.Caller.Address).row - rng.row
    
        If distance < elementSize Then
            result = elements(distance)
            listUnique = result
        Else
            listUnique = ""
        End If
    End Function
    

    Verwendung

    Geben Sie einfach =listUnique(range) in eine Zelle ein. Der einzige Parameter ist range, bei dem es sich um einen normalen Excel-Bereich handelt. Zum Beispiel: A$1:A$28 Oder H$8:H$30.

    Bedingungen

    • Das range muss eine Spalte sein.
    • Die erste Zelle, in der Sie die Funktion aufrufen, muss sich in derselben Zeile befinden, in der range beginnt.

    Beispiel

    Normalfall

    1. Daten eingeben und Funktion aufrufen.
      Enter data and call function
    2. Lass es wachsen.
      Grow it
    3. Voilà.
      Voilà

    Leere Zellenhülle

    Es funktioniert in Spalten, die leere Zellen enthalten. Die Funktion gibt auch nichts aus (keine Fehler), wenn Sie die Zellen (die die Funktion aufrufen) an Stellen übersteuern, an denen keine Ausgabe erfolgen soll, wie ich es im Teil "2. Grow it" des vorherigen Beispiels getan habe.

    Empty cell case

    22
    totymedli

    Ein Umweg ist, Ihre Excel-Tabelle in eine Google-Tabelle zu laden, die Funktion EINZIGARTIG (Bereich) von Google zu verwenden - und genau das zu tun, was Sie wollen - und die Google-Tabelle dann wieder im Excel-Format zu speichern.

    Ich gebe zu, dass dies keine praktikable Lösung für Excel-Benutzer ist, aber dieser Ansatz ist nützlich für alle, die die Funktionalität wünschen und in der Lage sind, eine Google-Tabelle zu verwenden.

    17
    yoyo

    Auch um einen sortierten eindeutigen Wert zu erhalten, kann die Formel verwendet werden. Dies ist eine Option, die Sie verwenden können:

    =INDEX($A$2:$A$18,MATCH(SUM(COUNTIF($A$2:$A$18,C$1:C1)),COUNTIF($A$2:$A$18,"<" &$A$2:$A$18),0))
    

    entfernungsdaten: A2:A18

    formel in Zelle C2

    Dies ist eine ARRAY-FORMEL

    3
    new bie

    es ist eine sehr alte Frage, aber die Leute scheinen immer noch Probleme damit zu haben, eine Formel zum Extrahieren einzigartiger Gegenstände zu verwenden. Hier ist eine Lösung, die die Werte zurückgibt, die sie selbst haben.

    Nehmen wir an, Sie haben "rot", "blau", "rot", "grün", "blau", "schwarz" in Spalte A2: A7

    dann setze dies in B2 als eine Matrixformel und kopiere =IFERROR(INDEX(A$2:A$7;SMALL(IF(FREQUENCY(MATCH(A$2:A$7;A$2:A$7;0);ROW(INDIRECT("1:"&COUNTA(A$2:A$7))));ROW(INDIRECT("1:"&COUNTA(A$2:A$7)));"");ROW(A1)));"")

    dann sollte es ungefähr so ​​aussehen; enter image description here

    3
    Jimmy

    Versuchen Sie diese Formel in B2 Zelle

    =IFERROR(INDEX($A$2:$A$7,MATCH(0,COUNTIF(B$1:$B1,$A$2:$A$7),0),1),"")
    

    Nach Klick auf F2 und drücken Sie Ctrl + Shift + Enter

    enter image description here

    3
    Hariharan G R

    Sie können COUNTIF verwenden, um die Anzahl der Vorkommen des Werts im Bereich abzurufen. Wenn der Wert also in A3 ist, ist der Bereich A1: A6. Verwenden Sie in der nächsten Spalte ein IF (EXACT (COUNTIF (A3: $ A $ 6, A3), 1), A3, ""). Für den A4 wäre es WENN (GENAU (COUNTIF (A4: $ A $ 6, A3), 1), A4, "")

    Dies würde Ihnen eine Spalte geben, in der alle eindeutigen Werte ohne Duplikat sind

    2
    Locksfree

    Angenommen, Spalte A enthält die Werte, für die Sie eine einzelne eindeutige Instanz suchen möchten, und enthält eine Überschriftenzeile, für die ich die folgende Formel verwendet habe. Wenn Sie möchten, dass es mit einer unvorhersehbaren Anzahl von Zeilen skaliert wird, können Sie A772 (wo meine Daten endeten) durch = ADDRESS (COUNTA (A: A), 1) ersetzen.

    = IF (COUNTIF (A5: $ A $ 772, A5) = 1, A5, "")

    Dies zeigt den eindeutigen Wert in der LETZTEN Instanz jedes Werts in der Spalte an und nimmt keine Sortierung an. Der Mangel an Absoluten wird ausgenutzt, um im wesentlichen ein abnehmendes "Gleitfenster" von zu zählenden Daten zu haben. Wenn der Countif im reduzierten Fenster gleich 1 ist, ist diese Zeile die letzte Instanz dieses Werts in der Spalte.

    2
    Geoff Still

    Das Zurückgreifen auf eine PivotTable zählt möglicherweise nicht als , wenn nur Formeln verwendet werden , erscheint jedoch praktischer als die meisten anderen Vorschläge:

    SO1429899 example

    1
    pnuts

    Ich habe eingefügt, was ich in meiner Excel-Datei unten verwende. Dadurch werden eindeutige Werte aus dem Bereich L11:L300 und füllen Sie sie ab Spalte V, V11 aus. In diesem Fall habe ich diese Formel in v11 und ziehe sie nach unten, um alle eindeutigen Werte zu erhalten.

    =INDEX(L$11:L$300,MATCH(0,COUNTIF(V$10:V10,L$11:L$300),0))
    

    oder

    =INDEX(L$11:L$300,MATCH(,COUNTIF(V$10:V10,L$11:L$300),))
    

    dies ist eine Matrixformel

    1
    user3404344

    Sie können es auch so machen.

    Erstellen Sie die folgenden benannten Bereiche:

    nList = the list of original values
    nRow = ROW(nList)-ROW(OFFSET(nList,0,0,1,1))+1
    nUnique = IF(COUNTIF(OFFSET(nList,nRow,0),nList)=0,COUNTIF(nList, "<"&nList),"")
    

    Mit diesen 3 benannten Bereichen können Sie die geordnete Liste der eindeutigen Werte mit der folgenden Formel erstellen. Es wird in aufsteigender Reihenfolge sortiert.

    IFERROR(INDEX(nList,MATCH(SMALL(nUnique,ROW()-?),nUnique,0)),"")
    

    Sie müssen die Zeilennummer der Zelle direkt über dem ersten Element Ihrer eindeutigen geordneten Liste durch das '?' Charakter.

    z.B. Wenn Ihre eindeutige geordnete Liste in Zelle B5 beginnt, lautet die Formel:

    IFERROR(INDEX(nList,MATCH(SMALL(nUnique,ROW()-4),nUnique,0)),"")
    
    1
    dm64

    Ich bin überrascht, dass diese Lösung noch nicht verfügbar ist. Ich denke, es ist eines der einfachsten

    Geben Sie Ihren Daten eine Überschrift und fügen Sie sie in einen dynamischen Namensbereich ein (d. H. Wenn sich Ihre Daten in der Spalte A befinden).

    =OFFSET($A$2,0,0,COUNTA($A:$A),1)
    

    Erstellen Sie anschließend eine Pivot-Tabelle, in der die Quelle als benannter Bereich festgelegt wird.

    Wenn Sie die Überschrift einfach in den Zeilenbereich einfügen, erhalten Sie die eindeutigen Werte, die Sie mit der eingebauten Funktion nach Belieben sortieren können.

    1
    CallumDA

    Drew Shermans Lösung ist sehr gut, aber die Liste muss zusammenhängend sein (er schlägt vor, manuell zu sortieren, und das ist für mich nicht akzeptabel). Die Lösung von Guitarthrower ist etwas langsam, wenn die Anzahl der Elemente groß ist und die Reihenfolge der ursprünglichen Liste nicht beachtet wird: Es wird unabhängig davon eine sortierte Liste ausgegeben.

    Ich wollte die ursprüngliche Reihenfolge der Elemente (die nach dem Datum in einer anderen Spalte sortiert wurden) und wollte außerdem ein Element nicht nur dann von der endgültigen Liste ausschließen, wenn es dupliziert wurde, sondern auch aus einer Vielzahl anderer Gründe.

    Meine Lösung ist eine Verbesserung gegenüber Drew Shermans Lösung. Ebenso verwendet diese Lösung 2 Spalten für Zwischenberechnungen:

    Spalte A:

    Die Liste mit Duplikaten und möglicherweise Leerzeichen, die Sie filtern möchten. Ich werde es als Beispiel im Intervall A11: A1100 positionieren, da ich Probleme hatte, die Drew Sherman-Lösung in Situationen zu verschieben, in denen sie nicht in der ersten Zeile begann.

    Spalte B:

    Diese Formel gibt 0 aus, wenn der Wert in dieser Zeile gültig ist (einen nicht duplizierten Wert enthält). Beachten Sie, dass Sie in der ersten IF oder einer weiteren äußeren IF beliebige andere Ausschlussbedingungen hinzufügen können.

    =IF(ISBLANK(A11);1;IF(COUNTIF($A$11:A11;A11)=1;0;COUNTIF($A11:A$1100;A11)))
    

    Verwenden Sie Smart Copy, um die Spalte zu füllen.

    Spalte C:

    In der ersten Zeile finden wir die erste gültige Zeile:

    =MATCH(0;B11:B1100;0)
    

    Von dieser Position suchen wir nach dem nächsten gültigen Wert mit der folgenden Formel:

    =C11+MATCH(0;OFFSET($B$11:$B$1100;C11;0);0)
    

    Fügen Sie es in die zweite Zeile ein und füllen Sie den Rest der Spalte mit Smart Copy. Diese Formel gibt den Fehler # N/D aus, wenn keine eindeutigen zu verweisenden Punkte mehr vorhanden sind. Dies werden wir in der nächsten Spalte nutzen.

    Spalte D:

    Jetzt müssen wir nur noch die Werte abrufen, auf die in Spalte C hingewiesen wird:

    =IFERROR(INDEX($A$11:$A$1100; C11); "")
    

    Verwenden Sie Smart Copy, um die Spalte zu füllen. Dies ist die eindeutige Ausgabeliste.

    1
    ReneSac

    Für eine Lösung, die für Werte in mehreren Zeilen und Spalten funktioniert, fand ich die folgende Formel sehr nützlich: http://www.get-digital-help.com/2009/03/16/unique-values- from-multiple-columns-using-array-formulas / Oscar auf get-digital.help.com geht es sogar Schritt für Schritt und mit einem visualisierten Beispiel durch.

    1) Geben Sie dem Wertebereich die Bezeichnung tbl_text

    2) Wenden Sie in diesem Fall die folgende Matrixformel mit STRG + UMSCHALT + EINGABETASTE auf Zelle B13 an. Ändern Sie $ B $ 12: B12, um auf die Zelle über der Zelle zu verweisen, in die Sie diese Formel eingeben.

        =INDEX(tbl_text, MIN(IF(COUNTIF($B$12:B12, tbl_text)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)), MATCH(0, COUNTIF($B$12:B12, INDEX(tbl_text, MIN(IF(COUNTIF($B$12:B12, tbl_text)=0, ROW(tbl_text)-MIN(ROW(tbl_text))+1)), , 1)), 0), 1)
    

    3) Kopieren/Ziehen, bis Sie N/A erhalten.

    0
    Arthur Yip

    Wenn man alle Daten in die gleichen Spalten einsetzt und die folgende Formel verwendet Beispielformel: =IF(C105=C104,"Duplicate","Not a Duplicate")

    Schritte

    1. Sortieren Sie die Daten
    2. Spalte für die Formel hinzufügen
    3. Überprüft, ob die Zelle der darüber liegenden Zelle entspricht
    4. Dann filtern Sie Not a Duplicate
    5. Optional: Kopieren Sie die von der Formelspalte berechneten Daten und fügen Sie sie nur als Werte ein (auf diese Weise werden beim Löschen von Daten keine Fehler angezeigt
    6. HINWEIS/WARNUNG: Dies funktioniert nur, wenn Sie die Daten zuerst sortieren

    Beispielformel: =IF(C105=C104,"Duplicate","Not a Duplicate")

    0
    Joseph A

    Optimierte VBScript-Lösung

    Ich habe den Code von totymedli verwendet, fand ihn jedoch unübersichtlich, wenn ich große Bereiche verwendete (wie von anderen hervorgehoben), und habe ihn daher ein wenig optimiert. Wenn jemand Interesse daran hat, mithilfe von VBScript eindeutige Werte zu erhalten, der Code von totymedli beim Aktualisieren jedoch langsam ist, versuchen Sie Folgendes:

        Function listUnique(rng As Range) As Variant
            Dim val As String
            Dim elements() As String
            Dim elementSize As Integer
            Dim newElement As Boolean
            Dim i As Integer
            Dim distance As Integer
            Dim allocationChunk As Integer
            Dim uniqueSize As Integer
            Dim r As Long
            Dim lLastRow  As Long
    
            lLastRow = rng.End(xlDown).row
    
            elementSize = 1
            unqueSize = 0
    
            distance = Range(Application.Caller.Address).row - rng.row
    
            If distance <> 0 Then
                If Cells(Range(Application.Caller.Address).row - 1, Range(Application.Caller.Address).Column).Value = "" Then
                    listUnique = ""
                    Exit Function
                End If
            End If
    
            For r = 1 To lLastRow
                val = rng.Cells(r)
                If val <> "" Then
                    newElement = True
                    For i = 1 To elementSize - 1 Step 1
                        If elements(i - 1) = val Then
                            newElement = False
                            Exit For
                        End If
                    Next i
                    If newElement Then
                        uniqueSize = uniqueSize + 1
                        If uniqueSize >= elementSize Then
                            elementSize = elementSize * 2
                            ReDim Preserve elements(elementSize - 1)
                        End If
                        elements(uniqueSize - 1) = val
                    End If
                End If
            Next
    
    
            If distance < uniqueSize Then
                listUnique = elements(distance)
            Else
                listUnique = ""
            End If
        End Function
    
    0
    Meir Shachar

    Ich bin vor kurzem auf dasselbe Problem gestoßen und habe es endlich herausgefunden.

    Verwenden Sie Ihre Liste, hier ist eine Paste aus meinem Excel mit der Formel.

    Ich empfehle, die Formel irgendwo in die Mitte der Liste zu schreiben, z. B. in die Zelle C6 Meines Beispiels und sie dann zu kopieren und in Ihre Spalte einzufügen. Die Formel sollte sich automatisch anpassen, ohne dass Sie es benötigen um es erneut einzugeben.

    Die einzige Zelle mit einer eindeutig anderen Formel befindet sich in der ersten Zeile.

    Verwenden Sie Ihre Liste ("rot", "blau", "rot", "grün", "blau", "schwarz"); Hier ist das Ergebnis: (Ich habe nicht genug Level, um ein Bild zu posten, also hoffe ich, dass diese txt-Version Sinn ergibt)

    • [Spalte A: Originalliste]
    • [Spalte B: Ergebnis der eindeutigen Liste]
    • [Spalte C: Eindeutige Listenformel]

      1. rot, rot, =A3
      2. blau, blau, =IF(ISERROR(MATCH(A4,A$3:A3,0)),A4,"")
      3. rot, =IF(ISERROR(MATCH(A5,A$3:A4,0)),A5,"")
      4. grün, grün, =IF(ISERROR(MATCH(A6,A$3:A5,0)),A6,"")
      5. blau, =IF(ISERROR(MATCH(A7,A$3:A6,0)),A7,"")
      6. schwarz, schwarz, =IF(ISERROR(MATCH(A8,A$3:A7,0)),A8,"")
    0
    Chris Reedy

    Dies funktioniert nur, wenn die Werte in der richtigen Reihenfolge sind, dh alle "roten" und alle "blauen" zusammen sind usw. Nehmen Sie an, dass sich Ihre Daten in Spalte A ab A2 befinden - (Beginnen Sie nicht ab Zeile 1) B2 geben Sie 1 ein In b3 geben Sie = ein, wenn (A2 = A3, B2, B2 + 1) Ziehen Sie die Formel nach unten, bis das Ende Ihrer Daten erreicht ist. Alle "Rot" werden 1, alle "Blau" werden 2, alle "Grün" werden sei 3 etc.

    Geben Sie in C2 1, 2, 3 usw. ein und gehen Sie die Spalte entlang. In D2 = OFFSET ($ A $ 1, MATCH (c2, $ B $ 2: $ B $ x, 0), 0) - wobei x die letzte Zelle ist. Ziehen Sie nach unten werden nur die eindeutigen Werte angezeigt. - Fehlerprüfung durchführen

    0
    Brian