![1 Suche nach einer Zeichenfolge:](https://rvso.com/image/1542109/1%20Suche%20nach%20einer%20Zeichenfolge%3A.png)
Ich habe eine große Liste mit Benutzergruppen und den entsprechenden Benutzernamen. Jetzt möchte ich sie noch weiter filtern. Die Benutzergruppen für jeden Benutzer befinden sich ALLE in einer Zelle (Benutzername - Benutzergruppen), das heißt, es befinden sich vielleicht 10-15 Benutzergruppen in einer einzigen Zelle. Ich möchte nur Zeilen, die aus „WTS“ bestehen, und dann die Benutzergruppenzeilen, die aus „WTS“ bestehen, in eine neue Zelle einfügen.
Wie gehe ich dabei vor?
Beispieldaten:
Benutzergruppen 1 WTS_A, BTS_B, WTS_C,
Ich möchte WTS_A und WTS_C.
Antwort1
Basierend auf meinem Verständnis Ihrer Frage schlage ich eine zweistufige Lösung vor.
Schritt 1- Verwenden Sie die Funktion „Text in Spalten“ in Excel und konvertieren Sie Ihren einspaltigen Text in mehrere Spalten. Verwenden Sie Leerzeichen und Kommas als Trennzeichen.
Schritt 2- Verwenden Sie eine benutzerdefinierte VBA-Funktion, um nur die gewünschten Zellen zu einer einzigen, durch Kommas getrennten Zelle zusammenzufügen.
Wenn Sie mit dem Text-in-Spalten-Prozess fertig sind, drücken Sie ALT + F11 auf dem Blatt, um den VBA-Editor zu öffnen. Fügen Sie über das Menü Einfügen ein Modul ein. Ein Modul1 wird erstellt und sein Code-Editor wird geöffnet. Wenn nicht, doppelklicken Sie im linken Bereich auf Modul1, um den Code-Editor zu öffnen.
Fügen Sie den folgenden Code dort ein.
Public Function TXTJOIN(argument1 As Range) 'Accept input range
result = ""
colcounter = argument1.Columns.Count
rowcounter = argument1.Rows.Count
If rowcounter > 1 Then
TXTJOIN = CVErr(xlErrValue) 'If row counter > 1 return #VALUE! Error
Exit Function
End If
If colcounter > 255 Then
TXTJOIN = CVErr(xlErrValue) 'If col counter > 255 return #VALUE! Error
Exit Function
End If
For Each element In argument1
If Left(element, 3) = "WTS" And Len(element) > 3 Then
result = result & element & ","
End If
Next element
If result = "" Then
TXTJOIN = result
Else
TXTJOIN = Left(result, Len(result) - 1)
End If
End Function
Dadurch wird eine benutzerdefinierte TXTJOIN-Funktion erstellt, die überprüft, ob der String als „WTS“ beginnt, und alle durch Kommas getrennten Spalten verbindet.
Speichern und VBA-Editor beenden. Zurück zum Arbeitsblatt. Gehen Sie nun zur äußersten rechten Spalte und geben Sie diese Funktion ein, indem Sie den anwendbaren Spaltenbereich angeben. Kopieren oder ziehen Sie sie entlang der Länge der anwendbaren Zeilen nach unten. Sie sollten die gewünschte Zeichenfolge in den entsprechenden Zellen erhalten. Kopieren Sie nur die Werte an anderer Stelle und löschen Sie den Rest der Spalten, um das Blatt zu bereinigen.
Sie erhalten in folgenden Situationen einen #VALUE!-Fehler von dieser Funktion.
Sie übergeben ihm ein mehrdimensionales Array, z. B. A1:D12
Sie übergeben ihm einen Bereich von mehr als 255 Spalten.
Sie übergeben ihm ein Array mit mehreren Zeilen, z. B. A1:A12
Lassen Sie mich wissen, ob das für Sie funktioniert.
Einschränkung - Dies setzt voraus, dass Benutzer-IDs durch Leerzeichen oder Kommas getrennt sind. Wenn zwei ohne Komma oder Leerzeichen zusammenstehen, kann diese Funktion sie nicht separat identifizieren.
Antwort2
Sie haben zwei Aufgaben: nach gültigen (interessanten) Daten suchen und diese dann formatieren.
1 Suche nach einer Zeichenfolge:
Die Suche nach einer Zeichenfolge wie WTS kann mit den Funktionen Find oder Search erfolgen. Beide zeigen Ihnen einen numerischen Wert an, wenn die Zeichenfolge gefunden wurde, wie folgt: FIND("WTS";A1) oder SEARCH("WTS";A1)
Machen Sie das für die erste Zeile. Wählen Sie die Zelle mit Ihrer Formelkopie aus und wählen Sie dann die Zellen darunter für alle Ihre Datenzeilen aus und fügen Sie sie ein. Die Formel wird automatisch aktualisiert auf FIND("WTS";B1)...FIND("WTS";C1)...
Ich schlage an dieser Stelle eine manuelle Filterung vor, um Zeilen auszublenden, die den Fehler #VALUE! anzeigen.
Löschen Sie einfach die Zeilen, die keine Ergebnisse liefern.
2 Teilen Sie die Benutzergruppendaten auf:
Wenn Ihre Zelle mehrere Einträge enthält, die durch eine Zeichenfolge (z. B. einen Bindestrich „-“) getrennt sind, wählen Sie Ihre Zellen aus und verwenden Sie „Daten“ -> „Text in Spalten“ -> „Getrennt“ -> „Trennzeichen hinzufügen“, wählen Sie „Sonstiges“ und geben Sie einen Bindestrich ein.
Dadurch werden Ihre Daten auf mehrere Zellen verteilt, etwa hier: Benutzergruppe1, Benutzergruppe2, Benutzergruppe3 …
3 Bonus-Tipp:
Wenn Sie die Suchfunktion auf mehrere Zellen anwenden möchten, die Sie gerade geteilt haben, verketten Sie die Zellen zu einer Zelle (kehren Sie die Teilung im Grunde um) und suchen Sie dann nach den verketteten Werten. A7 = CONCATENATE(A1;A2;A3) A8 = FIND("WTS";A7)