Note: The other languages of the website are Google-translated. Back to English

Wie kann ich mehrere Werte ohne Duplikate in Excel anzeigen und zurückgeben? 

Manchmal möchten Sie möglicherweise mehrere übereinstimmende Werte gleichzeitig in einer einzelnen Zelle anzeigen und zurückgeben. Wenn jedoch einige wiederholte Werte in die zurückgegebenen Zellen eingefügt werden, wie können Sie die Duplikate ignorieren und die eindeutigen Werte nur beibehalten, wenn Sie alle übereinstimmenden Werte zurückgeben, wie im folgenden Screenshot in Excel gezeigt?

doc gibt mehrere eindeutige Werte zurück 1

Suchen Sie mithilfe der benutzerdefinierten Funktion mehrere übereinstimmende Werte ohne Duplikate


Suchen Sie mithilfe der benutzerdefinierten Funktion mehrere übereinstimmende Werte ohne Duplikate

Der folgende VBA-Code kann Ihnen dabei helfen, mehrere übereinstimmende Werte ohne Duplikate zurückzugeben. Gehen Sie dazu folgendermaßen vor:

1. Halten Sie die Taste gedrückt Alt + F11 Schlüssel zum Öffnen der Microsoft Visual Basic für Applikationen Fenster.

2. Klicken Sie Insert > Modulund fügen Sie den folgenden Code in das Feld ein Modul Fenster.

VBA-Code: Vlookup und Rückgabe mehrerer eindeutiger übereinstimmender Werte:

Function MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
    Dim xDic As New Dictionary
    Dim xRows As Long
    Dim xStr As String
    Dim i As Long
    On Error Resume Next
    xRows = LookupRange.Rows.Count
    For i = 1 To xRows
        If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
            xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
        End If
    Next
    xStr = ""
    MultipleLookupNoRept = xStr
    If xDic.Count > 0 Then
        For i = 0 To xDic.Count - 1
            xStr = xStr & xDic.Keys(i) & ","
        Next
        MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
    End If
End Function

3. Klicken Sie nach dem Einfügen des Codes auf Tools > Referenzen im geöffneten Microsoft Visual Basic für Applikationen Fenster, und dann in der herausgesprungen Referenzen - VBAProject Dialogfeld überprüfen Microsoft Scripting-Laufzeit Option in der Verfügbare Referenzen Listenfeld, siehe Screenshot:

doc gibt mehrere eindeutige Werte zurück 2

4. Dann klick OK Um das Dialogfeld zu schließen, speichern und schließen Sie das Codefenster, kehren Sie zum Arbeitsblatt zurück und geben Sie die folgende Formel ein: =MultipleLookupNoRept(E2,A2:C17,3) Drücken Sie in eine leere Zelle, in der Sie das Ergebnis ausgeben möchten Weiter Schlüssel, um das richtige Ergebnis nach Bedarf zu erhalten. Siehe Screenshot:

doc gibt mehrere eindeutige Werte zurück 3

Hinweis: In der obigen Formel E2 ist das Kriterium, das Sie suchen möchten, A2: C17 ist der Datenbereich, den Sie verwenden möchten, die Nummer 3 ist die Spaltennummer, die die zurückgegebenen Werte enthält.


Die besten Tools für die Office-Produktivität

Kutools für Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2019 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. Vollständige Funktionen 30 Tage kostenlose Testversion. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50% und reduziert täglich Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (13)
Noch keine Bewertungen. Bewerten Sie als Erster!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Was wäre, wenn ich daraus eine Liste in einer Tabelle erstellen wollte, anstatt alle Ergebnisse in einer Zelle?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Tom,
Wenn Sie die eindeutigen Werte in einer Liste von Zellen statt in einer Zelle extrahieren möchten, kann Ihnen die folgende Formel helfen:

=LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

Versuch es bitte.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Skyyang,

Vielen Dank für diese Formel.
Das funktioniert für mich. Die Verarbeitung einer großen Datenmenge dauert jedoch lange.
Können wir diese Formel so ändern, dass sie etwas schneller arbeitet?
Danke noch einmal
Rasik
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Skyyang, was ist, wenn Sie das Ergebnis als Spalte haben möchten?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Gibt es eine Möglichkeit, ein Leerzeichen zwischen den mehreren Werten hinzuzufügen, die in den Ergebnissen abgerufen werden, ohne ein Komma am Ende der Liste einzufügen? Zum Beispiel würde Ihr obiges Ergebnis so aussehen: „Emily, James, Daisy, Gary“ statt wie folgt: „Emily,James,Daisy,Gary“

Ich habe versucht, diesen Teil des VBA-Codes zu bearbeiten: xStr = xStr & xDic.Keys(I) & "," um dies zu sein: xStr = xStr & xDic.Keys(I) & ", "

Dadurch wurde das Leerzeichen zwischen den Werten hinzugefügt, aber es wurde auch ein Komma nach dem letzten Wert hinzugefügt. „Emily, James, Gänseblümchen, Gary“

Gibt es eine Möglichkeit, dass es mit dem Leerzeichen funktioniert, aber ohne das zusätzliche Komma nach dem letzten Wert?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Demetre,
Verwenden Sie das Leerzeichen, um die Werte zu trennen, Sie müssen nur den VBA-Code ändern:
von xStr = xStr & xDic.Keys(i) & "," soll dies sein: xStr = xStr & xDic.Keys(i) & " "

Versuch es bitte.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
xStr = xStr & xDic.Keys(I) & "," soll dies sein: xStr = xStr & xDic.Keys(I) & ", "

Gibt es eine Möglichkeit, "," durch ALT + EINGABETASTE in der Zelle zu ersetzen, sodass sich die Ergebnisse in derselben Zelle, aber in verschiedenen Zeilen befinden? Muss ich dafür zusätzliche VBA-Module einführen und kombinieren?

Außerdem ist dieser Code ziemlich langsam, wenn er große Tabellen durchläuft. Kennt jemand schnellere Lösungen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, Imre,
Um die Ergebniswerte durch Alt + Enter-Tasten zu trennen, wenden Sie bitte die folgende benutzerdefinierte Funktion an:

Funktion MultipleLookupNoRept(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
Dim xDic als neues Wörterbuch
Dim xRows so lang
Dim xStr als Zeichenfolge
Dim ich als lang
On Error Resume Next
xRows = LookupRange.Rows.Count
Für i = 1 bis xRows
If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
End If
Nächste
xStr = ""
MultipleLookupNoRept = xStr
Wenn xDic.Count > 0 Dann
Für i = 0 bis xDic.Count - 1
xStr = xStr & xDic.Keys(i) & Chr(10) + Chr(13)
Nächste
MultipleLookupNoRept = Left(xStr, Len(xStr) - 1)
End If
Debug.Print xStr
End Function

Führen Sie dann die obigen Schritte in diesem Artikel aus, nachdem Sie die Formel eingegeben haben, sollten Sie auf der Registerkarte Start auf Text umbrechen klicken.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hi

Ich wollte daraus eine Liste in einer Tabelle erstellen, anstatt alle Ergebnisse in einer Zelle. Also habe ich eine ähnliche Formel wie unten verwendet (was Sie vorgeschlagen haben)

=LOOKUP(2, 1/((COUNTIF($E$1:E1, $B$2:$B$12)=0)*($D$2=$A$2:$A$12)), $B$2:$B$12)

Allerdings dauert die Verarbeitung bei einem großen Datensatz sehr lange.
Gibt es eine alternative Methode, um dies schneller zu verarbeiten?
Danke noch einmal
Rasik
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
während die Zeit des Loswerts multivlooks mein Arbeitsblatt hängen blieb. Gibt es andere Möglichkeiten, ohne Wiederholung zu multivlookup????

und ich habe es auch auf einem neuen Desktop verwendet, auch es hängt sich nur auf ...

Mein Datenwert liegt bei etwa 10,000 Zeilen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ich habe getan, was Sie gesagt haben, und es ist großartig, aber es hat immer noch eines meiner Probleme nicht gelöst. Was passiert, wenn Sie in jedem Monat einen einzigartigen Wert haben? =MultipleLookupNoRept(E2,A2:C17,3) , ich versuche E2&1 für Januar, aber es funktioniert nicht
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Jame,
Könnten Sie Ihr Problem hier als Screenshot zeigen, damit ich Ihre Anforderungen verstehen kann?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Das ist toll! Wie würde ich dies anpassen, um dem Wörterbuch keine Nullwerte hinzuzufügen? Ich habe versucht, den Fettdruck unten hinzuzufügen, aber die letzte Zeichenfolge wird immer noch mit ,"", -Instanzen zurückgegeben.


xRows = LookupRange.Rows.Count
Für i = 1 bis xRows
If LookupRange.Columns(1).Cells(i).Value = Lookupvalue And Not IsEmpty(LookupRange.Columns(1).Cells(i).Value) Then
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
End If
Nächste

Vielen Dank,
Es sind noch keine Kommentare vorhanden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte