Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Finden mehrerer Zeichen in einer Zellel

Finden mehrerer Zeichen in einer Zellel
21.07.2021 16:22:15
Lange
Ich grüße die Freunde intelligenter Tabellen mit vielen Funktionen, die die restliche Welt in Erstaunen versetzen!
Meine aktuelle Excel Herausforderung hat jetzt den Punkt erreicht, wo ich passen muss... Wie kann ich mehrere gesuchte Zeichengruppen in einer Zelle finden und ausgeben? Um die Fragestellung zu verdeutlichen, hier ein vereinfachtes Beispiel:
A1: 01.01.2020 ML/ Das Auto ist grün 05.02.2020 BA /Der Himmel ist blau 07.03.2020 ASL/Die Straße ist schwarz
Das gewünschte Ergebnis soll jetzt lauten: A2: ML, A3: BA, A4: ASL
Natürlich geht die Liste dann bei A2 mit dem nächsten Eintrag weiter und dann immer noch weiter.
Es geht also immer um die zwei Zeichen (oder drei, wenn es ein Freizeichen gibt, oder sogar vier bei drei Buchstaben und einem Freizeichen) links vom "/". Blöderweise halten sich manche Mitarbeiter nicht an übliche Formatierungen.
Erschwerend kommt hinzu, dass die Anzahl der Personen, die sich mit einem Auftrag beschäftigen, variabel ist. Es gibt also Aufträge, um die hat sich nur ein Mitarbeiter gekümmert (das aber vielleicht dann drei Mal) und andere, mit denen fünf Personen beschäftigt worden sind.
Auch ist Anzahl der möglichen Mitarbeiter, die sich um einen Auftrag kümmern können, recht hoch und durch Personalfluktuation dazu auch noch ständig in Veränderung. Ich habe den Versuch aufgegeben, eine Liste zu führen, die alle möglichen Buchstabenkombinationen enthält.
Warum das Ganze? Ich finde es immer schön zu wissen, für was etwas ist. In diesem Fall wird aus einem Ticketprogramm eine Exportdatei für Excel gezogen. Der gesamte Text eines Auftrages wird bei diesem Export in eine einzige Zelle gebracht und eine Datei umfasst normalerweise einen Zeitraum, in dem ca. 2000 Aufträge erzeugt worden sind. Für eine statistische Auswertung werden nun von jedem einzelnen Auftrag die Initialen aller Mitarbeiter, eben die zwei oder drei Buchstaben vor dem "/", gesucht. Am Ende soll dann ermittelt sein, wie oft ein Mitarbeiter in der Auftragsliste etwas tun musste, bzw. etwas getan hat. So sollen Schwachpunkte in unserer Auftragsabwicklung gefunden werden.
Ob man die Lösung nun mit Formeln oder per VBA erreicht, ist egal... ich für mein Teil bin wirklich ratlos und glaube nicht mehr so recht daran, das man mit Excel hier weiterkommt. Alleine schon das finden von mehr als einer Zeichenfolge in einer einzigen Zelle scheint unlösbar zu sein. Doch vielleicht hat hier einer der geneigten Leser ja DIE Idee.
Auf jeden Fall bedanke ich mich schon einmal für die bis hierher geleistete Aufmerksamkeit und verbleibe in aufgeregter Hoffnung
Martin Lange
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Finden mehrerer Zeichen in einer Zellel
21.07.2021 16:32:30
Daniel
HI
in A2 und dann nach unten ziehen:

=WENNFEHLER(GLÄTTEN(TEIL($A$1;FINDEN("|";WECHSELN($A$1;"/";"|";ZEILE(A1)))-3;3));"")
aber deine nachfolgdenen Bescheibung wäre es sinnvoller, die Formel in B1 zu schreiben und nach rechts zu ziehen.
dann musst du "Zeile(A1)" durch "Spalte(A1)" ersetzen.
der Trick ist hier, dass man das mehrfach vorkommende Zeichen "/" an der aktuell gesuchten Stelle durch ein anderes Zeichen ersetzt, welches so im Text nicht vorkommt. Dieses Zeichen ist dann eindeutig, so dass danach gesucht werden kann.
Beim ersetzen mit WECHSELN kann man angeben, dass man nur das 1, 2, 3. usw Vorkommen eines Zeichens austauschen will und nicht alle.
Gruß Daniel
Anzeige
AW: Finden mehrerer Zeichen in einer Zellel
22.07.2021 14:31:20
Martin
Zunächst einmal muss ich mich bei Daniel und Fennek herzlich bedanken - so schnell eine kompetente und auf den Punkt gebrachte Antwort, ich war, bin sehr beeindruckt. Natürlich bin ich auch deprimiert, dass ein von mir als "unmöglich" deklariertes Problem von der Gemeinschaft hier in Minuten faktisch gelöst worden ist - aber mein Ego wird das überleben.
Ich beschäftige mich jetzt erst einmal mit der Formel und melde alsbald, wie es läuft.
Anzeige
AW: Finden mehrerer Zeichen in einer Zellel
27.07.2021 15:08:30
Martin
Hallo noch einmal. Ich hatte jetzt endlich die Zeit, mit der Formel von Daniel zu arbeiten und zu verstehen. Funktioniert sehr gut. Es gibt zwar auch ein paar falsche Treffer (weil gewisse Mitarbeiter sich einfach nicht an Regeln halten können) - aber die kann man wegfiltern. Da aber die Lösung für mein "unlösbares" Problem so unfassbar schnell da war, war wohl die Herausforderung zu niedrig.... ich werde diesen Gedanken für die Zukunft im Hinterkopf behalten.
Fürs erste aber noch eine Frage zu dieser Formel hier - quasi als Zuckerguss für die fertige Torte.
Es werden jetzt alle Initialen gefunden, die in der Zelle A1 stehen und in B1, C1, D1, etc. ausgegeben (nach rechts ziehen war übrigens auch deutlich besser als runter - auch dafür Danke, Daniel). Hier gibt es aber verschiedene Möglichkeiten:
1. Zwei Buchstaben ohne Freizeichen direkt an dem "/"
2. Zwei Buchstaben mit Freizeichen zu dem "/"
3. Drei Buchstaben ohne Freizeichen direkt an dem "/"
4. Drei Buchstaben mit Freizeichen zu dem "/".
Dieser letzte Fall, der macht ein wenig Ärger.
Als Lösung habe ich aus dem "-3;3" einfach "-4,3" gemacht. Das hat auch funktioniert - aber leider nur für für den Fall 4 selbst . Die Fälle 1 bis 3 sind jetzt unschön, da schon ein Zeichen rechts von Initialen mit dabei ist.
Könnte man die ursprüngliche Formel von Daniel noch irgendwie modifizieren?
Ich habe mal eine Beispielsdatei hochgeladen (https://www.herber.de/bbs/user/147332.xlsx)
In A sind Beispieldatensätze mit dem Text aus dem Export aus unserem Ticketprogramm. Die gelb markierten Felder sind diejenigen, die auf "Fall 4" zutreffen
Anzeige
AW: Finden mehrerer Zeichen in einer Zellel
27.07.2021 16:14:09
Daniel
Lösche doch einfach das Leerzeichen vor dem "/", wenn denn vorkommt.
Erweitere hierzu die Formel um ein zusätzliches Wechseln,
also statt $A$1 dann Wechseln($A$1;" /";"/").
Wenn auch Kollegen gibt, die da mehrere Leerzeichen einbauen, nimm ein zusätzliches Glätten:
also statt $A$1 dann Wechseln(Glätten($A$1);" /";"/")
Und das überall, wo das $A$1in der Formel vorkommt (natürlich nicht bei Spalte(A1))
Gruß Daniel
Anzeige
Regex?
27.07.2021 16:37:20
Yal
Hallo zusammen,
es scheint die typische RegEx-Aufgabe zu sein. Davor steht ein Datum in DD.MM.YYYY dahinter einen "/"
RegEx ist "[0123][0-9]\.[01][0-9]\.2\d{3}\s*([a-zA-Z]{1,3})\s?\/" (auf regex101.com getestet: https://regex101.com/r/r1CcR1/1 )
Also als UDF (User Defined Function) in einem Modul abzulegen (nicht in Worksheet-Codepane!):

Public Function Mitarbeiter(Target, Optional Index As Long = 1) As String
Dim objRegEx As Object
Dim objMatch As Object
Set objRegEx = CreateObject("VBScript.RegExp")
With objRegEx
.Global = True
.IgnoreCase = True
.Pattern = "[0123][0-9]\.[01][0-9]\.2\d{3}\s*([a-zA-Z]{1,3})\s?\/"
Set objMatch = .Execute(Target.Value)
End With
On Error Resume Next
Mitarbeiter = objMatch.Item(Index - 1).submatches(0)
Set objRegEx = Nothing
Set objMatch = Nothing
End Function
Aufgerufen kann in
A2 mit = Mitarbeiter (A$1;1)
A3 mit = Mitarbeiter (A$1;2)
A4 mit = Mitarbeiter (A$1;3)
usw.
VG
Yal
Anzeige
AW: Finden mehrerer Zeichen in einer Zellel
21.07.2021 16:33:39
Fennek
Hallo,
mit dem String in A1 geht:

Sub NZ()
Dim Tx, Ty
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Tx = Split(Cells(i, 1), "/")
For b = 0 To UBound(Tx) - 1
Ty = Split(Trim(Tx(b)))
Cells(i, 3 + b) = Ty(UBound(Ty))
Next b
Next i
End Sub
mfg
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Zeichen in einer Zelle finden und ausgeben


Schritt-für-Schritt-Anleitung

Um mehrere Zeichen in einer Zelle zu finden und auszugeben, kannst du die folgende Formel verwenden. Diese Formel sucht nach den Initialen vor dem "/" in einer Zelle und gibt sie in den nachfolgenden Zellen aus.

  1. Öffne Excel und gib deinen Text in Zelle A1 ein. Beispiel:

    01.01.2020 ML/ Das Auto ist grün 05.02.2020 BA /Der Himmel ist blau 07.03.2020 ASL/Die Straße ist schwarz
  2. Gib die folgende Formel in Zelle A2 ein:

    =WENNFEHLER(GLÄTTEN(TEIL($A$1;FINDEN("|";WECHSELN($A$1;"/";"|";ZEILE(A1)))-3;3));"")
  3. Ziehe die Formel nach unten, um die weiteren Initialen zu erfassen. Wenn du die Ausgabe in einer horizontalen Liste möchtest, ändere "ZEILE(A1)" zu "SPALTE(A1)" und ziehe nach rechts.

  4. Ersetze Leerzeichen vor dem "/" falls nötig, indem du die Formel anpasst:

    =WENNFEHLER(GLÄTTEN(TEIL(WECHSELN($A$1;" /";"/");FINDEN("|";WECHSELN(WECHSELN($A$1;" /";"/");"/";"|";SPALTE(A1)))-3;3));"")

Häufige Fehler und Lösungen

  1. Problem mit falschen Treffern: Wenn falsche Initialen ausgegeben werden, kann das an nicht einheitlichen Formaten liegen. Überprüfe die Daten und stelle sicher, dass das Format konsistent ist.

  2. Formel gibt Fehler zurück: Überprüfe, ob die verwendeten Zeichen korrekt sind. Achte darauf, dass alle Zeichen und Leerzeichen korrekt eingegeben sind.

  3. Leerzeichen vor dem "/": Stelle sicher, dass du die Formel anpasst, um Leerzeichen zu entfernen. Verwende WECHSELN und GLÄTTEN, um unerwünschte Leerzeichen zu beseitigen.


Alternative Methoden

Du kannst auch VBA verwenden, um mehrere Zeichen in einer Zelle zu finden. Hier ist ein einfaches Makro:

Sub NZ()
    Dim Tx, Ty
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
        Tx = Split(Cells(i, 1), "/")
        For b = 0 To UBound(Tx) - 1
            Ty = Split(Trim(Tx(b)))
            Cells(i, 3 + b) = Ty(UBound(Ty))
        Next b
    Next i
End Sub

Füge den Code in ein neues Modul ein und führe das Makro aus, um die Initialen aus Zelle A1 zu extrahieren.


Praktische Beispiele

Angenommen, du hast die folgende Eingabe in Zelle A1:

01.01.2020 ML/ Das Auto ist grün 05.02.2020 BA /Der Himmel ist blau 07.03.2020 ASL/Die Straße ist schwarz

Nach der Verwendung der oben genannten Formel oder des VBA-Codes erhältst du in Zelle A2 bis A4:

  • A2: ML
  • A3: BA
  • A4: ASL

Das ist eine effektive Methode, um die Initialen der Mitarbeiter zu extrahieren und zu analysieren.


Tipps für Profis

  • Reguläre Ausdrücke: Wenn du mit komplexen Mustern arbeitest, ziehe in Betracht, reguläre Ausdrücke (RegEx) zu verwenden, um die Zeichenfolgen effizienter zu finden.
  • Formel optimieren: Nutze WENNFEHLER, um sicherzustellen, dass deine Formel auch dann funktioniert, wenn keine weiteren Initialen vorhanden sind.
  • Daten filtern: Nutze die Filterfunktion von Excel, um unerwünschte Ergebnisse schnell zu identifizieren und zu entfernen.

FAQ: Häufige Fragen

1. Wie finde ich das zweite Zeichen in einer Zelle?
Du kannst die Formel anpassen, um das zweite Zeichen zu finden, indem du die Position entsprechend änderst.

2. Was ist, wenn die Anzahl der Mitarbeiter variiert?
Die oben genannten Methoden sind flexibel und können für jede Anzahl von Mitarbeitern verwendet werden, indem du die Formel oder das Makro entsprechend anpasst.

3. Kann ich die Formel für mehrere Zellen gleichzeitig verwenden?
Ja, ziehe die Formel einfach nach unten oder nach rechts, um sie auf weitere Zellen anzuwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige