Ignorieren Sie Duplikate und erstellen Sie eine neue Liste eindeutiger Werte in Excel

77

Ich habe eine Spalte mit Werten, die oft als Duplikate angezeigt werden. Ich muss eine neue Spalte mit eindeutigen Werten basierend auf der ersten Spalte wie folgt erstellen:

Column A   Column B  
a          a
a          b
b          c
c
c

Diese Spalte B muss tatsächlich auf einem anderen Blatt in derselben Arbeitsmappe angezeigt werden, daher gehe ich davon aus, dass sie mit dem sheet2!A1Stilformat arbeiten muss.

Ich hatte kein Glück mit den Menüoptionen Daten / Filter, da dies nur auf Befehl zu funktionieren scheint. Spalte B muss automatisch aktualisiert werden, wenn ein neuer Wert in Spalte A eingegeben wird.

tob88
quelle

Antworten:

66

Toteros Antwort ist richtig. Der Link ist auch sehr hilfreich.

Grundsätzlich lautet die Formel, die Sie benötigen:

B2=INDEX($A$2:$A$20, MATCH(0, COUNTIF($B$1:B1, $A$2:$A$20), 0))

Drücken Sie dann ctrl+ shift+ enter(oder es funktioniert nicht mit einer Array-Formel).

Zwei wichtige Dinge, die Sie hier beachten sollten: Die vollständige Liste befindet sich in Zellen A2:A20, dann muss diese Formel in die Zelle eingefügt werden B2(nicht , da dies einen Zirkelverweis B1ergibt). Zweitens ist dies eine Array-Formel, Sie müssen also ctrl+ shift+ drücken, sonst enterfunktioniert es nicht richtig.

achaudhr
quelle
9
Wie N / A und Nullen loswerden?
Moritz Schmitz v. Hülst
@ MoritzSchmitzv.Hülst Entfernen Sie das #N/As mit IFERROR(...,"")und entfernen Sie das 0, indem Sie den Bereich korrekt angeben, dh $A$2:$A$20im Beispiel, wenn Sie es dynamisch benötigen, verwenden SieOFFSET
Dan
Was macht B2 in dieser Formel? Es ist relativ zu nichts in meinem Blatt und ich bekomme nur N / A bis zum Ende.
Eoin
2
Oh, ich habe durch Drücken von STRG Umschalt & Eingabetaste gelöst, aber jetzt bekomme ich nur noch einen Namen
Eoin
Und was ist, wenn ich diesen Inhalt auf ein anderes Blatt kopieren möchte?
Topa_14
21

Es gibt eine gute Anleitung, wie dies zu tun hier .

Grundsätzlich etwas Ähnliches wie:

=INDEX(Sheet1!$A$1:$A$20, MATCH(0, COUNTIF($B$1:B1,Sheet!$A$1:$A$20), 0))
Totero
quelle
1
Hallo Totero, diese Formel scheint sicherlich auf das zuzutreffen, was ich tun möchte, aber sie gibt eine "Rundschreiben-Referenzwarnung" zurück und zeigt einfach 0 in jeder Zelle an. Was mache ich falsch?
Tob88
5
Zirkelverweis bedeutet, dass sich Ihre Formel in einer Zelle befindet, auf die mit derselben Formel verwiesen wird. Stellen Sie einfach sicher, dass die Formel nicht im Bereich A1: A20 oder Zelle B1 liegt.
Jüri Ruut
10

In meinem Fall wurde das Excel eingefroren, wenn die Formel von verwendet wurde

B2 = INDEX ($ A $ 2: $ A $ 20, MATCH (0, COUNTIF ($ B $ 1: B1, $ A $ 2: $ A $ 20), 0))

weil es viele Zeilen gab (10000). Also habe ich es auf eine andere Weise gemacht, die ich unten zeige.

Ich habe meine ursprüngliche Liste in eine zweite Spalte kopiert und dann mit der Funktion von Excel "Duplikate entfernen" die Liste der eindeutigen Werte gefunden.

Von der Microsoft Office-Website kopiert:

Select all the rows, including the column headers, in the list 

Sie möchten filtern.

Klicken Sie auf die obere linke Zelle des Bereichs und ziehen Sie sie in die untere rechte Zelle.

On the Data menu, point to Filter, and then click Advanced Filter.
In the Advanced Filter dialog box, click Filter the list, in place.
Select the Unique records only check box, and then click OK.

Die gefilterte Liste wird angezeigt und die doppelten Zeilen werden ausgeblendet.

On the Edit menu, click Office Clipboard.

Der Aufgabenbereich Zwischenablage wird angezeigt.

Make sure the filtered list is still selected, and then click Copy Copy button.

Die gefilterte Liste wird mit Begrenzungslinien hervorgehoben und die Auswahl wird als >> Element oben in der Zwischenablage angezeigt.

On the Data menu, point to Filter, and then click Show All.

Die ursprüngliche Liste wird erneut angezeigt.

Press the DELETE key.

Die ursprüngliche Liste wird gelöscht.

In the Clipboard, click on the filtered list item.

Die gefilterte Liste wird an derselben Stelle wie die ursprüngliche Liste angezeigt.

Quelle: Microsoft Office-Website (Link entfernt, Ursache tot)

Jesús Romera
quelle
Low Tech und sehr effektiv. Denken Sie daran, den Filter vor dem Kopieren und Einfügen NICHT zu löschen (wahrscheinlich für die meisten von Ihnen offensichtlich, aber ich wurde beim ersten Mal erwischt!)
Tom Auger
Der Link ist hier: support.office.com/en-us/article/…
tavnab
5

In einer sortierten Spalte können Sie auch diese Idee ausprobieren:

B2=A2
B3=IFERROR(INDEX(A:A,MATCH(B2,A:A,1)+1),"")

B3 kann eingefügt werden. Nach dem letzten eindeutigen Spiel wird 0 angezeigt. Wenn dies unerwünscht ist, setzen Sie eine IF-Anweisung, um dies auszuschließen.

Bearbeiten:

Einfacher als eine IF-Anweisung, zumindest für Textwerte:

B3=IFERROR(T(INDEX(A:A,MATCH(B2,A:A,1)+1)),"")
Witz
quelle
Ihre Formel schlägt fehl, wenn die Daten "aabbcced d" sind
Fahim Parkar
@FahimParkar Ja, ich weiß, wie gesagt: "Auf einer sortierten Spalte"
Jook
Ohh, das habe ich nicht bemerkt. Besser, um solchen Punkt hervorzuheben (die
Kobold
Bitte. Normalerweise wählt jeder einfach den Code aus und schreibt. Niemand las (zumindest ich) alle Texte. Markieren Sie daher besser den Wichtelpunkt. Genießen Sie SO ...
Fahim Parkar
5

So entfernen Sie Duplikate aus einer Spalte

  1. Sortieren Sie die Werte in Spalte A A-> Z.
  2. Wählen Sie Spalte B.
  3. Geben Sie in das Eingabefeld für die Formel ein, während Spalte B noch ausgewählt ist

    =IF(TRIM(A1)=TRIM(A2),"",TRIM(A1))
    
  4. Während Spalte B noch ausgewählt ist, wählen Sie Bearbeiten -> Füllen -> Nach unten (in neueren Versionen wählen Sie einfach Zelle B1 aus und ziehen Sie das äußere Feld nach unten, um es in der Spalte ganz nach unten zu erweitern).

Hinweis : Wenn sich Spalte B auf einem anderen Blatt befindet, können Sie Blatt1! A1 und Blatt1! A2 ausführen.

Allen King
quelle
2

Im Arbeitsblattmodul für das Blatt mit der Liste:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngDest As Range

    If Not Intersect(Target, Me.Columns(1)) Is Nothing Then

        Set rngDest = ThisWorkbook.Sheets("Sheet2").Range("A1")

        Me.Range(Me.Range("A2"), Me.Cells(Rows.Count, 1).End(xlUp)).AdvancedFilter _
            Action:=xlFilterCopy, CopyToRange:=rngDest, Unique:=True

    End If

End Sub
Tim Williams
quelle
2

Ich habe eine Liste von Farbnamen im Bereich A2: A8, in Spalte BI möchte ich eine eindeutige Liste von Farbnamen extrahieren.

Befolgen Sie die unten angegebenen Schritte:

  • Wählen Sie die Zelle B2 aus. Schreiben Sie die Formel, um die eindeutigen Werte aus einer Liste abzurufen.
  • =IF(COUNTIF(A$2:A2,A2)=1,A2,””)
  • Drücken Sie Enterauf Ihrer Tastatur.
  • Die Funktion gibt den Namen der ersten Farbe zurück.
  • Kopieren Sie dieselbe Formel nach unten, um den Wert für die restlichen Zellen zurückzugeben. Um eine Formel im Bereich B3: B8 zu kopieren, kopieren Sie die Formel in Zelle B2 durch Drücken der Taste CTRL+Cauf Ihrer Tastatur und fügen Sie sie durch Drücken der Taste in den Bereich B3: B8 ein CTRL+V.
  • Hier sehen Sie die Ausgabe, in der wir die eindeutige Liste der Farbnamen haben.
Hitesh Rathor
quelle
0

Sortieren Sie für diese Aufgabe zuerst Ihre Daten in der Reihenfolge von A nach Z oder Z nach A, und verwenden Sie dann einfach eine einfache Formel wie unten angegeben:

=IF(A2=A3, "Duplicate", "Not Duplicate")

Die obige Formel besagt, dass wenn die Daten der Spalte A2 (A ist die Spalte und 2 die Zeilennummer) ähnlich zu A3 sind (A ist die Spalte und 3 ist die Zeilennummer), Duplikat gedruckt wird, andernfalls Nicht Duplikat.

Betrachten wir ein Beispiel: Spalte A besteht aus einer E-Mail-Adresse, in der einige doppelt vorhanden sind. In Spalte 2 habe ich die oben angegebene Formel verwendet, die mir in den Ergebnissen die zwei doppelten Zellen anzeigt, von denen eine Zeile 2 und Zeile 6 ist.

Wenn Sie die doppelten Daten erhalten haben, setzen Sie einfach einen Filter auf Ihr Blatt und machen Sie nur die doppelten Daten sichtbar und löschen Sie alle unnötigen Daten.

Sachin Joshi
quelle
0

Ehrlich gesagt bin ich diesen Beispielen bis zum Abschlag gefolgt und sie haben einfach nicht funktioniert. Nachdem ich mich sinnlos bemüht hatte, Excel zum Laufen zu bringen, kopierte ich einfach den gesamten Inhalt meiner Spalte nach NotePad ++, wo ich innerhalb von Minuten eine einfache Lösung finden konnte. Sehen Sie sich Folgendes an: Entfernen doppelter Zeilen in Notepad ++

Bearbeiten: Hier ist eine kurze Übersicht, wie es in TextFX geht:

Plugins -> Plugin Manager -> Plugin Manager anzeigen -> Registerkarte Verfügbar -> TextFX -> Installieren

Nachdem TextFX in NotePad ++ installiert wurde, wählen Sie den gesamten Text aus, aus dem Sie Duplikate entfernen möchten, und überprüfen Sie Folgendes: TextFX -> TextFX-Tools -> Sortieren gibt nur EINZIGARTIGE Zeilen aus

Klicken Sie dann auf "Zeilen zwischen Groß- und Kleinschreibung unterscheiden" oder "Zeilen zwischen Groß- und Kleinschreibung unterscheiden", um die eindeutige Sortierung durchzuführen.

Brian Cronrath
quelle
0

Finden Sie hier oben genannte Formel mit Fehlerkontrolle

=IFERROR(INDEX($B$2:$B$9, MATCH(0,COUNTIF($D$1:D1, $B$2:$B$9), 0)),"") 

Dabei gilt Folgendes: (B2: B9 sind die Spaltendaten, aus denen Sie die eindeutigen Werte extrahieren möchten. D1 ist die obige Zelle, in der sich Ihre Formel befindet.)

Sergey Ryvkin
quelle
0

Alles, was Sie tun müssen, ist: Gehen Sie zur Registerkarte Daten. Wählen Sie Erweitert in Sortieren und Filtern. In Aktionen wählen Sie: Kopieren an einen anderen Speicherort, wenn Sie eine neue Liste wünschen. - An einen beliebigen Speicherort kopieren Wählen Sie im Listenbereich die Liste aus, von der Sie die Datensätze entfernen möchten. Und das Wichtigste ist zu überprüfen: Nur eindeutige Datensätze.

Abbas
quelle
0
=SORT(UNIQUE(A:A))

Die obige Formel funktioniert am besten, wenn Sie eindeutige Werte in einer Spalte auflisten möchten.

TheOnlyAnil
quelle
Zu UNIQUE()Ihrer Information , ist nur in Office 365 verfügbar, nicht in älteren Excels.
Ross Patterson
0

Ein weiterer Ansatz seit Excel 2016 ist die Verwendung von Power Query.

Wie man:

  • Wählen Sie die Daten (einschließlich des Feldnamens) aus.
  • benutze Menü Data> From a table or a range,
  • (Excel verwandelt Ihr Blatt in eine Excel-Tabelle, was sehr praktisch ist),
  • Klicken Sie im Power Query Editor mit der rechten Maustaste auf ColumnA (die Spaltenüberschrift), und Remove duplicates,
  • Close and loadWählen Sie im Menü, wählen Sie , wo Sie das Ergebnis haben möchten, und Sie sind wie folgt fertig .
  • Wenn Sie möchten, dass die Ergebnistabelle aktualisiert wird, klicken Sie mit der rechten Maustaste darauf und wählen Sie Refresh.

Leistungen :

  • Es verwendet die CPU nur bei manueller Aktualisierung, was für lange Listen sehr praktisch ist.
  • Wenn Sie neugierig sind, bietet dies viele andere leistungsstarke Optionen.

Nachteile:

  • Es wird nicht im laufenden Betrieb aktualisiert (Sie müssen mit der rechten Maustaste klicken und die Ergebnistabelle aktualisieren).
  • Personen mit einer alten Excel-Version können die Ergebnistabelle nicht aktualisieren.
mll
quelle
-6

Der MODERNE Ansatz besteht darin, Fälle zu berücksichtigen, in denen eine Informationsspalte von einem Webdienst wie einer OData-Quelle stammt. Wenn Sie Filterauswahlfelder aus massiven Daten generieren müssen, die Werte für die Spalte repliziert haben, beachten Sie den folgenden Code:

var CatalogURL = getweb(currenturl)
                 +"/_api/web/lists/getbytitle('Site%20Inventory%20and%20Assets')/items?$select=Expense_x0020_Type&$orderby=Expense_x0020_Type";

/* the column that is replicated, is ordered by <column_name> */

    OData.read(CatalogURL,
        function(data,request){

            var myhtml ="";
            var myValue ="";

            for(var i = 0; i < data.results.length; i++)
            {
                myValue = data.results[i].Expense_x0020_Type;

                if(i == 0)
                {
                        myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";
                }
                else
                if(myValue != data.results[i-1].Expense_x0020_Type)
                {
                        myhtml += "<option value='"+myValue+"'>"+myValue+"</option>";

                }
                else
                {

                }


            }

            $("#mySelect1").append(myhtml);

        });
user4376001
quelle