Kennen Sie eine Möglichkeit in Excel, eine Liste eindeutiger Werte anhand einer Formel zu "berechnen"?
Zum Beispiel: ein vertikaler Bereich enthält Werte "red"
, "blue"
, "red"
, "green"
, "blue"
,
und ich als Ergebnis haben will , , , + schließlich 2 weitere leere Zellen. "black"
"red
"blue"
"green"
"black"
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 Verwendung von VBA haben.
excel
excel-formula
Patrick Honorez
quelle
quelle
Antworten:
Dies ist ein Oldie, und es gibt einige Lösungen, aber ich habe eine kürzere und einfachere Formel gefunden als jede andere, die mir begegnet ist, und sie könnte für jeden nützlich sein, der vorbeikommt.
Ich habe die Farbliste
Colors
(A2: A7) benannt, und die in Zelle C2 eingefügte Array-Formel lautet wie folgt ( fest ):Verwenden Sie
Ctrl+Shift+Enter
diese Option , um die Formel in C2 einzugeben und C2 nach C3: C7 zu kopieren .Erklärung mit Beispieldaten {"rot"; "Blau"; "rot"; "Grün"; "Blau"; "schwarz"}:
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} (schwarz = 0 Elemente kleiner, blau = 1 Element, rot = 4 Elemente ). Dies kann für jeden Artikel in einen Sortierwert übersetzt werden .COUNTIF(C$1:C...,Colors)
Gibt für jedes Datenelement, das bereits im sortierten Ergebnis enthalten ist, ein Array (# 2) mit 1 zurück. In C2 wird {0; 0; 0; 0; 0; 0} und in C3 {0; 0; 0; 0; 0; 1} zurückgegeben, da "schwarz" zuerst in der Sortierung und zuletzt in den Daten steht. In C4 {0; 1; 0; 0; 1; 1} zeigt es "schwarz" an und alle Vorkommen von "blau" sind bereits vorhanden.SUM
gibt den k-ten Sortierwert zurück, indem alle bereits vorhandenen kleineren Werte gezählt werden (Summe von Array # 2).MATCH
findet den ersten Index des k-ten Sortierwerts (Index in Array # 1).IFERROR
dient nur dazu, den#N/A
Fehler in den unteren Zellen auszublenden , wenn die sortierte eindeutige Liste vollständig ist.Um zu wissen, wie viele einzigartige Gegenstände Sie haben, können Sie diese reguläre Formel verwenden :
quelle
IF(ISBLANK(Colors), 0,1)
zum Array Nr. 1 und zum Array gelöst werdenSUM()
.C1
. Der Header sollte keinem der Werte entsprechen. Das Filtern der Liste ist ein anderes Problem mit einer anderen Lösung. Öffnen Sie daher möglicherweise eine Frage. Wenn Sie es nicht sortiert benötigen, können Sie eine Formel wie diese verwenden=IFERROR(INDEX(Colors,MATCH(0,COUNTIF(C$1:C1,Colors)+(Colors="blue"),0)),"")
.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 hübsch ist. Ich dachte, ich stelle sicher, dass der einfache Weg für dich wirklich nicht funktioniert; ^).
Verwenden Sie den Befehl Erweiterter Filter
Verwenden von Formeln (Beachten Sie, dass ich auf der Locksfree-Lösung aufbaue, um eine Liste ohne Löcher zu erhalten.)
Diese Lösung funktioniert mit den folgenden Einschränkungen:
Hier ist die Zusammenfassung der Lösung:
Und hier ein schrittweises Beispiel:
Hoffe das hilft....
quelle
IF
in Schritt 6.1 verwendete funktioniert nur, wenn Sie einen engen Bereich auswählen. Ich habe eine neue Antwort mit einem verbesserten Algorithmus gegeben, der diese Probleme nicht hat und keine zusammenhängende oder sortierte Eingabeliste benötigt.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 diesem Lernprogramm sehen können .
Module
inInsert
.Excel Macro-Enabled
inSave As
.Quellcode
Verwendung
Betreten Sie einfach
=listUnique(range)
eine Zelle. Der einzige Parameterrange
ist ein gewöhnlicher Excel-Bereich. Zum Beispiel:A$1:A$28
oderH$8:H$30
.Bedingungen
range
muss eine Spalte sein.range
beginnt.Beispiel
Normalfall
Leerer Zellenkasten
Es funktioniert in Spalten mit leeren Zellen. Außerdem gibt die Funktion nichts aus (keine Fehler), wenn Sie die Zellen (Aufruf der Funktion) an Stellen überwickeln, an denen keine Ausgabe erfolgen soll, wie ich es im vorherigen Teil "2. Grow it" getan habe.
quelle
Ein Umweg besteht darin, Ihre Excel-Tabelle in eine Google-Tabelle zu laden, die EINZIGARTIGE Funktion (Bereich) von Google zu verwenden, die genau das tut, was Sie möchten, 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 nutzen möchten und eine Google-Tabelle verwenden können.
quelle
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
Fügen Sie dies dann als Array-Formel in B2 ein und kopieren Sie es nach unten
=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;
quelle
Selbst um einen sortierten eindeutigen Wert zu erhalten, kann dies mithilfe einer Formel erfolgen. Dies ist eine Option, die Sie verwenden können:
Bereichsdaten:
A2:A18
Formel in der Zelle
C2
Dies ist eine ARRAY-FORMEL
quelle
Versuchen Sie diese Formel in
B2
ZelleNach dem Klicken
F2
und drücken SieCtrl
+Shift
+Enter
quelle
Sie können COUNTIF verwenden, um die Häufigkeit des Auftretens des Werts im Bereich abzurufen. Wenn der Wert in A3 liegt, ist der Bereich A1: A6, und 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
quelle
Angenommen, Spalte A enthält die Werte, für die Sie eine einzelne eindeutige Instanz suchen möchten, und hat eine Überschriftenzeile. Ich habe die folgende Formel verwendet. Wenn Sie möchten, dass es mit einer unvorhersehbaren Anzahl von Zeilen skaliert, können Sie A772 (wo meine Daten endeten) durch = ADRESSE (COUNTA (A: A), 1) ersetzen .
= IF (COUNTIF (A5: $ A $ 772, A5) = 1, A5, "")
Dadurch wird der eindeutige Wert an der LETZTEN Instanz jedes Werts in der Spalte angezeigt und es wird keine Sortierung angenommen. Es nutzt den Mangel an Absoluten aus, um im Wesentlichen ein abnehmendes "Schiebefenster" 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.
quelle
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 berücksichtigt: Sie gibt unabhängig davon eine sortierte Liste aus.
Ich wollte die ursprüngliche Reihenfolge der Elemente (die nach dem Datum in einer anderen Spalte sortiert waren), und außerdem wollte ich ein Element nicht nur aus der endgültigen Liste ausschließen, wenn es dupliziert wurde, sondern auch aus verschiedenen anderen Gründen.
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 Lösung des Drew Sherman 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 (enthält einen nicht duplizierten Wert). Beachten Sie, dass Sie in der ersten IF oder einer weiteren äußeren IF beliebige andere Ausschlussbedingungen hinzufügen können.
Verwenden Sie Smart Copy, um die Spalte zu füllen.
Spalte C:
In der ersten Zeile finden wir die erste gültige Zeile:
Von dieser Position aus suchen wir nach dem nächsten gültigen Wert mit der folgenden Formel:
Setzen Sie es in die zweite Zeile und füllen Sie den Rest der Spalte mit Smart Copy. Diese Formel gibt den Fehler # N / D aus, wenn keine eindeutigen Punkte mehr angezeigt werden. Wir werden dies in der nächsten Spalte nutzen.
Spalte D:
Jetzt müssen wir nur noch die Werte in Spalte C anzeigen:
Verwenden Sie Smart Copy, um die Spalte zu füllen. Dies ist die eindeutige Ausgabeliste.
quelle
Sie können es auch so machen.
Erstellen Sie die folgenden benannten Bereiche:
Mit diesen 3 benannten Bereichen können Sie die geordnete Liste eindeutiger Werte mit der folgenden Formel generieren. Es wird in aufsteigender Reihenfolge sortiert.
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:
quelle
Ich bin überrascht, dass diese Lösung noch nicht gefunden wurde. Ich denke, es ist eines der einfachsten
Geben Sie Ihren Daten eine Überschrift und fügen Sie sie in einen dynamischen benannten Bereich ein (dh wenn Ihre Daten in Spalte sind
A
).Erstellen Sie anschließend eine Pivot-Tabelle, und machen Sie die Quelle zu Ihrem benannten Bereich.
Wenn Sie die Überschrift einfach in den Zeilenabschnitt einfügen, erhalten Sie die eindeutigen Werte. Sortieren Sie nach Belieben mit der integrierten Funktion.
quelle
Ich habe das, was ich verwende, in meine Excel-Datei unten eingefügt. Dadurch werden eindeutige Werte aus dem Bereich
L11:L300
erfasst und ab Spalte V, V11 ausgefüllt. In diesem Fall habe ich diese Formel in Version 11 und ziehe sie nach unten, um alle eindeutigen Werte zu erhalten.oder
Dies ist eine Array-Formel
quelle
Der Rückgriff auf eine PivotTable zählt möglicherweise nicht nur zur Verwendung von Formeln, sondern scheint praktischer zu sein als die meisten anderen Vorschläge bisher:
quelle
Ich bin kürzlich auf dasselbe Problem gestoßen und habe es endlich herausgefunden.
Unter Verwendung Ihrer Liste finden Sie hier eine Einfügung 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 automatisch angepasst werden, ohne dass Sie sie erneut eingeben müssen.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, diese txt-Version macht Sinn )
[Spalte C: Einzigartige Listenformel]
=A3
=IF(ISERROR(MATCH(A4,A$3:A3,0)),A4,"")
=IF(ISERROR(MATCH(A5,A$3:A4,0)),A5,"")
=IF(ISERROR(MATCH(A6,A$3:A5,0)),A6,"")
=IF(ISERROR(MATCH(A7,A$3:A6,0)),A7,"")
=IF(ISERROR(MATCH(A8,A$3:A7,0)),A8,"")
quelle
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 mit Zeile 1) B2 Geben Sie 1 ein. In b3 geben Sie = if (A2 = A3, B2, B2 + 1) ein. Ziehen Sie die Formel nach unten, bis das Ende Ihrer Daten erreicht ist. Alle "Rot" ist 1, alle "Blau" sind 2, alle "Grün" 3 sein usw.
Geben Sie in C2 1, 2, 3 usw. in die Spalte ein. In D2 = OFFSET ($ A $ 1, MATCH (c2, $ B $ 2: $ B $ x, 0), 0) - wobei x die letzte Zelle ist Es werden nur die eindeutigen Werte angezeigt. - Fehlerprüfung durchführen
quelle
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- Spalten-mit-Array-Formeln / Oscar unter get-digital.help.com gehen es sogar Schritt für Schritt und mit einem visualisierten Beispiel durch.
1) Geben Sie dem Wertebereich die Bezeichnung tbl_text
2) Wenden Sie die folgende Array-Formel mit STRG + UMSCHALT + EINGABETASTE in diesem Fall auf Zelle B13 an. Ändern Sie $ B $ 12: B12, um auf die Zelle über der Zelle zu verweisen, in die Sie diese Formel eingeben.
3) Kopieren / ziehen Sie nach unten, bis Sie N / A erhalten.
quelle
Wenn man alle Daten in die gleichen Spalten setzt und die folgende Formel verwendet Beispielformel:
=IF(C105=C104,"Duplicate","Not a Duplicate")
Schritte
Not a Duplicate
Beispielformel:
=IF(C105=C104,"Duplicate","Not a Duplicate")
quelle
Optimierte VBScript-Lösung
Ich habe Totymedlis Code verwendet, aber festgestellt, dass er bei der Verwendung großer Bereiche (wie von anderen hervorgehoben) festgefahren ist, und habe seinen Code ein wenig optimiert. Wenn jemand daran interessiert ist, eindeutige Werte mit VBScript zu erhalten, der Code von totymedli jedoch beim Aktualisieren langsam ist, versuchen Sie Folgendes:
quelle
Einfache Formellösung: Verwenden dynamischer Array-Funktionen (UNIQUE-Funktion)
Seit Herbst 2018 enthalten die Abonnementversionen von Microsoft Excel (Office 365 / Microsoft 365-App) sogenannte dynamische Array-Funktionen (in nicht abonnierten Versionen für Office 2016/2019 noch nicht verfügbar).
EINZIGARTIGE Funktion
Eine dieser Funktionen ist die
UNIQUE
Funktion, die ein Array eindeutiger Werte für den ausgewählten Bereich liefert.Beispiel
Im folgenden Beispiel liegen die Eingabewerte im Bereich
A1:A6
. DieUNIQUE
Funktion wird in die Zelle eingegebenC1
.Wie Sie sehen können, wird die
UNIQUE
Funktion automatisch über den erforderlichen Zellenbereich übertragen, um alle eindeutigen Werte anzuzeigen. Dies wird durch den dünnen, blauen Rahmen angezeigtC1:C4
.Gut zu wissen
Da die
UNIQUE
Funktion automatisch die erforderliche Anzahl von Zeilen überschreitet, sollten Sie genügend Platz unter dem lassenC1
. Wenn nicht genügend Speicherplatz vorhanden ist, wird eine#SPILL
Fehlermeldung angezeigt.Wenn Sie auf die Ergebnisse der
UNIQUE
Funktion verweisen möchten , können Sie einfach auf die Zelle verweisen, die dieUNIQUE
Funktion enthält, und ein Hash-#
Zeichen hinzufügen .Es ist auch möglich, eindeutige Werte in mehreren Spalten zu überprüfen . In diesem Fall liefert die UNIQUE-Funktion alle Zeilen, in denen die Kombination der Zellen in der Zeile eindeutig ist:
Wenn Sie eindeutige Spalten anstelle von eindeutigen Zeilen anzeigen möchten , müssen Sie das
[by_col]
Argument auf setzenTRUE
(Standard istFALSE
, dass Sie eindeutige Zeilen erhalten).Sie können auch Werte anzeigen, die genau einmal angezeigt werden, indem Sie das
[exactly_once]
Argument auf Folgendes setzenTRUE
:quelle
Wählen Sie die Spalte mit den doppelten Werten aus und gehen Sie zur Registerkarte "Daten". Wählen Sie dann "Datentools" die Option "Doppelte entfernen". 1) "Fahren Sie mit der aktuellen Auswahl fort." 2) Klicken Sie auf die Schaltfläche "Doppelte entfernen ....". 3) Klicken Sie auf die Schaltfläche "Alle auswählen". 4) Klicken Sie auf in Ordnung
Jetzt erhalten Sie die eindeutige Werteliste.
quelle