Excel-Teilzeichenfolge aus Zeichenfolge extrahieren


22

Ich suche nach einer Möglichkeit, eine Teilzeichenfolge variabler Länge aus einer Zeichenfolge zu extrahieren.

Meine Zellen sehen ungefähr so ​​aus:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Ich möchte die Zeichenfolge am -Zeichen aufteilen , damit die Zellen wie folgt aussehen:

ABC
ABCDE
ABCD

Dies sollte mit einer Formel und nicht mit VBScript erfolgen.

Ich benutze Excel 2010

BEARBEITEN

Ich habe festgestellt, dass der Datensatz nicht immer das -Zeichen enthält, was bedeutet, dass es keine Änderung geben sollte.

Antworten:


26

Dieses Problem kann in zwei Schritte unterteilt werden:

  1. Suchen Sie den Index in der Zeichenfolge des gewünschten geteilten Zeichens (in diesem Fall "-"oder " - ").
  2. Ermitteln Sie die Präfix-Teilzeichenfolge vom Anfang des Originaltexts bis zum geteilten Index.

Die Befehle FINDund geben SEARCHjeweils den Index einer needlein a angegebenen Variable zurück haystack( FINDGroß- und Kleinschreibung SEARCHwird beachtet, Groß- und Kleinschreibung wird nicht berücksichtigt, und Platzhalter werden zugelassen). Vor diesem Hintergrund haben wir:

FIND(search_text, source_cell, start_index)

oder in diesem Fall:

FIND(" - ", A1, 1)

Sobald wir den Index haben, brauchen wir das Präfix von source_cell, um den "Split" durchzuführen. MIDmacht genau das:

MID(source_cell, start_index, num_characters)

Zusammengenommen haben wir:

=MID(A1,1,FIND(" - ",A1,1))

mit A1 mit Text von ABC - DEFgibt ABC.


7

Erweitere Andrews Antwort basierend auf deiner Bearbeitung: Um die Zeichenkette zu finden, an der geteilt werden soll, verwenden wir die FINDFunktion. Wenn der FINDangegebene String nicht gefunden wird, wird ein #VALUE?Fehler zurückgegeben. Wir müssen also nach diesem Wert suchen und stattdessen einen Ersatzwert verwenden.

Um zu überprüfen, ob ein Fehlerwert vorliegt #VALUE, verwenden wir die ISERRORFunktion, also:

=ISERROR(FIND(" - ", A1, 1))

Dies ist der Fall, wenn die FINDFunktion die Zeichenfolge "-" in der A1-Zelle nicht finden kann. Also verwenden wir das, um zu entscheiden, welchen Wert wir verwenden wollen:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Das heißt, wenn der Befehl find einen Fehler zurückgibt, verwenden Sie die nicht geänderte A1-Zelle. Führen Sie andernfalls die MIDFunktion aus, die Andrew bereits bereitgestellt hat.


2

Vielen Dank an Andrew Coleson für Ihre Antwort.

Um das noch zu ergänzen, wenn Sie alles auf der rechten Seite von wollen -, verwenden Sie diesen Code:

= MITTEL (A1, LEN (B1) + 3, LEN (A1))

Welches ist:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Dieser Code eignet sich besonders, wenn Sie nach dem Zeichen eine undefinierte Anzahl von Zeichen haben -.

Zum Beispiel:

Wenn Sie haben:

ABC - DEFG
AB - CDEFGH
...

Dies macht den Trick auch =MID(a1,FIND("-",a1)+1,LEN(a1))ohne "extra-Cellular" Referenzen)
Mikey

1

Hier ist eine sehr einfache Möglichkeit, das 5. Zeichen von links aus einer Textzeichenfolge in Excel zu extrahieren:

Angenommen, die Zeichenfolge ABCDEFGHIJwird in Zelle A1 in einer Excel-Tabelle gespeichert, dann die folgende Formel

=RIGHT(LEFT(A1,5),1)

erzeugt das 5. Zeichen von links in der Zeichenkette, nämlich E.


(Gibt es keine MIDFunktion in Excel? Ich bin sicher, dass es in älteren Visual Basic- =MID(A1, 5, 1)
Versionen vorhanden ist

0

Die folgende Formel entfernt eine Teilzeichenfolge aus [TEXTCOLUMN_1]

zB: wenn Sie konvertieren möchten , -./thumb/hello.jpgum thumb/hello.jpgdann verwenden Sie die folgende Formel

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1]= der Spaltenname, den Sie ändern möchten [NUM_OF_CHARACTERS]= die Anzahl der Zeichen von der linken Seite, die Sie entfernen möchten

Wenn Sie von der rechten Seite entfernen möchten, verwenden Sie Folgendes

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.