2

Angesichts einer Tabellenkalkulationszelle, die eine Zeichenfolge enthält, die aus einer getrennten Reihe von Zeichensegmenten besteht, muss ich das letzte Segment extrahieren.So extrahieren Sie geparste Daten von einer Zelle in eine andere

Betrachten Sie beispielsweise Spalte A, die Datenstrings wie XX-XXX-X-XX-XX-G10 enthält, wobei X für ein beliebiges Zeichen steht. Welche Formel müsste ich in Spalte B einfügen, um als Ergebnis G10 zu erhalten?

  A    B 
1 XX-XXX-X-XX-XX-G10  G10 

Ich suche nach einer Formel, die in Libre Office Calc, Open Office Calc, MS Excel oder Google Tabellen arbeiten könnte.

+0

Danke @Mogsdad zum Bearbeiten und Klärung meiner Frage :) – PipBoy2000

+1

Froh zu - wow, 5 Antworten! (Natürlich, wenn du erwähnt hättest, dass der Teil, den du haben wolltest, immer 3 Zeichen hätte, wäre es viel, viel, viel einfacher gewesen!) – Mogsdad

+0

Ja. Ich lerne immer noch SO;) um genauer zu sein in der Problemerklärung. Nochmals vielen Dank für Hilfe und Zeit @Mogsdad (Ich bin besorgt, downgestimmt werden Arsch Hölle!; D) – PipBoy2000

Antwort

2

Eine weitere Möglichkeit In LO Calc verwenden Sie das allgemeine reguläre Ausdrucksmakro, das hier gezeigt wird: https://superuser.com/a/1072196/541756. Dann würde die Zelle Formel JPV Antwort ähnlich sein:

=REFIND(A1,"([^-]+$)") 
+0

Whooah! Erstklassig, spitzenmäßig! <3 Regex und arbeite wie ein Zauber! – PipBoy2000

+0

Und wie wäre es mit diesem Fall? http://stackoverflow.com/questions/38095773/how-to-extract-data-from-one-cell-and-another – PipBoy2000

0

Es scheint, dass Sie die Zeichen möchten, die am Ende einer Zeichenfolge rechts von der letzten Instanz eines Bindestrichzeichens "-" angezeigt werden.

Diese Formel, von here angepasst, funktioniert in Excel * Calc & Google Sheets:

=TRIM(RIGHT(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),LEN(A1))) 

Erläuterung:

  • SUBSTITUTE(A1,"-",new_string) wird jeder Bindestrich ("-") in der ursprünglichen Zeichenfolge finden aus Zelle A1 und ersetzen Sie sie durch eine new_string.

  • REPT(" ",LEN(A1)) ist eine Zeichenfolge mit wiederholten Leerzeichen (" "), die dieselbe Länge wie die ursprüngliche Zeichenfolge in Zelle A1 hat.

  • TRIM(RIGHT(string,count)) erhalten die am weitesten rechts count Zeichen, und trimmen führende und nachstehende Leerzeichen. Da die Zeichenfolge zuvor durch Ersetzen von Bindestrichen durch Leerzeichen aufgefüllt wurde und count dasselbe LEN(A1) ist, das für diese Auffüllung verwendet wird, bestehen die letzten count Zeichen aus einer Reihe von Leerzeichen gefolgt von dem, was dem letzten Bindestrich folgte!

In Google Tabellen Ein alternativer Ansatz ist die Split-Funktion zu verwenden, um den Wert aus der Spalte A in ein Array zu brechen, dann das letzte Element auswählen. (Excel-VBA hat eine split() Funktion, so können Sie diese Arbeit in Excel machen durch das Schreiben von VBA-Code als eine benutzerdefinierte Funktion zur Verfügung zu stellen.)

=INDEX(SPLIT(A1,"-"),0,COUNTA(SPLIT(A1,"-"))) 
2

Wenn Sie Google Tabellen verwenden, regexextract möglich sein würde:

=REGEXEXTRACT(A1, "[^-]+$") 
+1

eleganteste Lösung - ich vermisse wirklich eine Regex-fähige ersetzen Funktion in LO Calc! – tohuwawohu

1

In Libreoffice Calc und Openoffice Calc können Sie einen regulären Ausdruck verwenden, um die Position des Textes nach dem letzten - Charakter zu bestimmen:

=SEARCH("-[:alnum:]+$";A1) 

gibt 15 zurück, wenn A1 XX-XXX-X-XX-XX-G10 enthält.

Jetzt können Sie diesen Wert verwenden, um den Text "hinter" diese Position zu erhalten, mit der RIGHT() Funktion:

=RIGHT(A1;LEN(A1)-SEARCH("-[:alnum:]+$";A1)) 

auf mehreren Linien Aufgeteilt:

=RIGHT(    ' return text beginning from the right... 
    A1;    ' of cell A1 ... 
    LEN(A1)   ' start at lenght(A1) = 18 
    -     ' minus ... 
    SEARCH(   ' position ... 
     "-[:alnum:]+$" ' of last "-" ... 
     ;A1   ' in cell A1 = 15 ==> last three characters 
    ) 
) 
0

ich einfach Lösung gefunden:

= RIGHT (A1; 3)

das gibt mir G10 als die Ergebnis auch! Es funktioniert, weil COL A am Ende immer 3 Zeichen hat!

+0

Und wie wäre es mit diesem Fall? http://stackoverflow.com/questions/38095773/how-to-extract-data-from-one-cell-and-andere – PipBoy2000