Tabellenkalkulation: Teilen Sie eine Spalte, wenn sie eine bestimmte Zeichenfolge enthält

338
big_smile

Hier ist ein Auszug aus meiner Tabelle: enter image description here

Bitte beachten Sie: Dies ist nur ein vereinfachtes Beispiel. Meine vollständige Tabelle enthält viele Spalten und über 10.000 Zeilen.

In meiner Tabelle habe ich häufig Zeilen mit Text in eckigen Klammern, die mit LIT:(wie im Bild) beginnen.

Ist es möglich, diesen Text automatisch zu extrahieren und in einer separaten Spalte in der Kalkulationstabelle zu platzieren?

(ZB also im obigen Beispiel [Lit: Next of hotel]in eine separate Spalte, würde aber trotzdem in derselben Zeile bleiben).

Hinweis: Wie im Beispiel gezeigt, hat nicht jede Zeile ein [Lit:] - Beispiel.

Ich verwende derzeit Apple-Seiten. Ich bin aber gerne bereit, Google Docs oder Open Office auszuprobieren, wenn dies möglich ist, oder ein anderes Paket.

0

1 Antwort auf die Frage

1
AFH

Ihre Beispiele sind in Konflikt miteinander, ob die gewünschte Zeichenfolge mit [LIT:oder beginnt [Lit:. Ich habe davon ausgegangen, dass Großbuchstaben [LIT:.

In LibreOffice (und vermutlich anderen Excel-Entsprechungen, obwohl ich keine Ahnung von Apple Pages oder Google Docs habe), FIND()können Sie mit der Funktion eine Teilzeichenfolge innerhalb eines Textfelds suchen. Wenn jedoch die Teilzeichenfolge nicht gefunden wird, wird eine Fehlermeldung ausgegeben Verwenden Sie IFERROR()auch.

Ich werde zunächst das einfache Beispiel betrachten, bei dem jedes [LIT:Feld immer am Ende der Zeichenfolge steht ]und das letzte Zeichen ist. Wenn sich die Daten in der Spalte befinden A, beginnen Sie mit A1, und die folgende Formel macht, was Sie wollen:

=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"") 

Wenn hier FIND()ein Wert zurückgegeben wird, wird die Teilzeichenfolge von dieser Position bis zum Ende der Zeichenfolge zurückgegeben. andernfalls FIND()und damit MID()einen Fehler, und eine leere Zeichenkette zurückgegeben erzeugen.

In einem komplexeren Fall, in dem das [LIT:Feld in der Mitte der Zeichenfolge vorkommen kann, muss die Formel erarbeitet werden:

=IFERROR(MID(A1,FIND("[LIT:",A1),FIND("]",MID(A1,FIND("[LIT:",A1),LEN(A1)))),"") 

In diesem Fall wird der Teilstring [LIT:bis zum Ende des Strings gefunden, die Anzahl der aus der ursprünglichen Zelle generierten Zeichen wird jedoch durch die Position ]innerhalb des Teilstrings begrenzt. Jeder Fehler erzeugt wieder eine leere Zeichenfolge.

Unabhängig davon, welche Formel Sie verwenden, kopieren Sie die Zelle, in der sie sich befindet, und fügen Sie sie in den Rest der Spalte ein. Wenn Sie entweder [LIT:oder behandeln müssen [Lit:, ersetzen Sie FIND("[LIT:",A1)durch SEARCH("\[L[Ii][Tt]:",A1): Während bei der FIND()Suche nach einem wörtlichen, von der Groß- und Kleinschreibung abhängigen Treffer SEARCH()die Übereinstimmung von regulären Ausdrücken verwendet wird.

Wenn Sie den [LIT:Teilstring aus der ursprünglichen Spalte entfernen müssen, fügen Sie Adas extrahierte [LIT:Feld in die Spalte ein Cund fügen Sie Folgendes ein B1:

=SUBSTITUTE(A1,C1,"",1) 

Jetzt kopieren Sie den Rest der Spalte Bund verstecken Sie die Spalte A. Natürlich können beliebige Spalten und Startzeilen verwendet werden. Für meine Beispiele habe ich benachbarte Spalten ohne Kopfzeilen verwendet.

Beachten Sie, dass =SUBSTITUTE()keine Fehler generiert werden, so dass keine Verwendung erforderlich ist IFERROR().

Danke, das funktioniert hervorragend. Die LIT-Zeichenfolge bleibt jedoch in der ursprünglichen Spalte. Ich hatte gehofft, es aufzuteilen, also wird die Zeichenfolge aus der ursprünglichen Spalte entfernt (und tritt nur in der neuen Spalte auf). Gibt es überhaupt etwas zu tun? Nochmals vielen Dank für Ihre Hilfe. Ich freue mich sehr, dass Sie sich die Zeit genommen haben, mir zu helfen! big_smile vor 6 Jahren 0
Das war aus Ihrer Frage nicht klar. Sie können keinen Text aus der ursprünglichen Spalte entfernen, ohne Skripts erstellen zu müssen. Sie können eine neue Spalte erstellen, die den bearbeiteten Text enthält, und dann die ursprüngliche Spalte ausblenden. AFH vor 6 Jahren 1
Vielen Dank! Gibt es sowieso eine NOT-Anweisung zu verwenden (zB finde alles, was nicht [LIT:] ist und den gesamten Inhalt der eckigen Klammern. Auf diese Weise könnte ich die ursprüngliche Spalte ausblenden und dann zwei neue Spalten erstellen. Eine Spalte, die alle LIT enthält Text (wie Sie es mit Ihrer Formel gezeigt haben) und dann einen Text, der den gesamten Text enthält. big_smile vor 6 Jahren 0
Es wäre schön, aber die einzige Möglichkeit, die ich tun kann, ist, den Anfang von [LIT:] zu finden und die Zeichen links davon auszugeben, die mit den Zeichen rechts neben einem nachfolgenden `]` verkettet sind. mit einem Fehler beim Generieren der Originalzeichenfolge. AFH vor 6 Jahren 1
Gibt es eine gute Ressource, die Sie empfehlen könnten, um zu erfahren, wie ich dies lernen kann? Ich denke, ein Teil des Problems besteht darin, dass ich nicht sicher bin, wie dieses "Wissensfeld" heißt. Daher ist es schwierig, nach Antworten zu suchen! big_smile vor 6 Jahren 0
Ich dachte, die Antwort wäre eine Ausarbeitung von Suchanfragen und Teilzeichenfolgen (was ich für eine Möglichkeit hätte, Sie herauszufinden), aber dann erinnerte ich mich an eine Funktion, die eine elegantere Antwort liefert. Daher habe ich meine Antwort aktualisiert, um diese Funktion zu verwenden. AFH vor 6 Jahren 1