Pieter hat viele Zellen in Spalte A, die Text enthalten. Insbesondere enthalten die Zellen jeweils mehrere Textsätze. Er möchte die Sätze in einzelne Zellen aufteilen. Er weiß, dass er das Werkzeug Text zu Spalten verwenden kann, aber das ist nicht ganz nützlich, da Sätze mit unterschiedlichen Satzzeichen enden können und einige Satzzeichen in der Mitte eines Satzes verwendet werden können. (Zum Beispiel eine Zeit nach einem Titel wie Herr oder Frau) Pieter fragt sich, ob es einen besseren Weg gibt, die Sätze in verschiedene Zellen aufzuteilen.

Um diese Aufgabe manuell auszuführen, gibt es verschiedene Möglichkeiten.

Erstens können Sie eine Hilfsspalte verwenden, um mit Ihren Daten zu arbeiten. Sie können diese Formel beispielsweise in Zelle B1 einfügen:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"Mr.", "Mr#"), "Mrs.", "Mrs#"), "Ms.", "Ms#")

Kopieren Sie dann die Formel in die Anzahl der erforderlichen Zellen. Am Ende werden Ihre gemeinsamen Titel (Herr, Frau und Frau) durch eine eindeutige Folge von Zeichen (Herr #, Frau # und Frau #) ersetzt. Kopieren Sie die Ergebnisse von Spalte B als Werte zurück in Spalte B (damit die Formel entfernt wird) und verwenden Sie dann Text in Spalten in Spalte B. Verwenden Sie schließlich Suchen und Ersetzen, um alle Instanzen des Zeichens # in einen Punkt zu ändern.

Der Nachteil dabei ist, dass die Formel nur drei häufige Verwendungen des Zeitraums berücksichtigt, in denen Sie möglicherweise tatsächlich einige weitere verarbeiten müssen. Zum Beispiel könnten Ihre Sätze Titel wie Dr. oder Anmeldeinformationen wie Ph.D. oder Esq. Die Liste solcher mit Perioden beladenen Abkürzungen könnte ziemlich lang werden. In diesen Fällen können Sie die Änderungen manuell folgendermaßen vornehmen:

  1. Verwenden Sie Suchen und Ersetzen, um nach allen Punkten in Ihrem Text zu suchen, und ersetzen Sie Punkte ohne Satzende durch das Markierungszeichen (# in der obigen Technik).

  2. Verwenden Sie das Werkzeug Text in Spalten, um die Sätze zu teilen.

  3. Verwenden Sie Suchen und Ersetzen, um alle Instanzen des Markierungszeichens auf einen Punkt zurückzusetzen.

Wenn Sie viele Zeiträume ohne Satzende haben, kann dieser Vorgang eine Weile dauern.

Natürlich befassen sich diese Ansätze mit einem eigentlich komplexen Thema.

Die eigentliche Frage ist, wie man einen Satz definiert. Im Englischen gibt es nur drei Satzzeichen, die einen Satz beenden – einen Punkt, ein Ausrufezeichen und ein Fragezeichen. Es gibt jedoch Abweichungen und Ausnahmen. Zum Beispiel könnte ein Satz mit einem Anführungszeichen enden, aber dieses Anführungszeichen hat immer eines der drei abschließenden Satzzeichen vor sich. Zusätzlich könnte ein Punkt verwendet werden, um eine Abkürzung zu markieren, wie bereits erwähnt.

Wenn Sie mit Suchen und Ersetzen beginnen, um mit all diesen Satzzeichen und Ausnahmen umzugehen, können Sie schnell auf eine komplizierte Reihe von Schritten stoßen. Es ist viel besser, die Aufteilung mit einem Makro durchzuführen. Hier ist eine, die die meisten Sätze und Abkürzungen richtig handhabt:

Sub SplitSentences()

Dim c As Range     Dim sException(8) As String     Dim sReplacement(8) As String     Dim sTerm(6) As String     Dim sTemp As String     Dim J As Integer     Dim sExp As Variant

' These are the valid ways for a sentence to end     sTerm(1) = ". "

sTerm(2) = "! "

sTerm(3) = "? "

sTerm(4) = "." & Chr(34)

sTerm(5) = "!" & Chr(34)

sTerm(6) = "?" & Chr(34)



' These are the exceptions to the rule     ' of a period ending a sentence     sException(1) = "Mr."

sException(2) = "Mrs."

sException(3) = "Ms."

sException(4) = "Dr."

sException(5) = "Esq."

sException(6) = "Ph.D."

sException(7) = "a.m."

sException(8) = "p.m."



' Set up the replacements for the exceptions     For J = 1 To 8         sReplacement(J) = Replace(sException(J), ".", "[{}]")

Next J

For Each c In Selection         sTemp = c.Value

' Convert all the exceptions         For J = 1 To 8             sTemp = Replace(sTemp, sException(J), sReplacement(J))

Next J

' Demarcate sentences with a tab         For J = 1 To 6             sTemp = Replace(sTemp, sTerm(J), Trim(sTerm(J)) & Chr(9))

Next J

' Split sentences into an array         sExp = Split(sTemp, Chr(9))

For J = 0 To UBound(sExp)

' Replace the code for valid periods             sExp(J) = Replace(sExp(J), "[{}]", ".")

' Place sentences into adjacent cells on row             c.Offset(0, J).Value = Trim(sExp(J))

Next J     Next c End Sub

Beachten Sie, dass die akzeptablen Satzabschlüsse im sTerm-Array und die akzeptablen Abkürzungen im sException-Array vermerkt sind. Wenn Ihr Text möglicherweise andere Abkürzungen enthält, sollten Sie das sException-Array um diese erweitern.

Das Makro durchläuft die von Ihnen ausgewählten Zellen und ersetzt alle zulässigen Ausnahmen. Es ersetzt dann alle akzeptablen Satzbeendigungen durch diese Beendigung, gefolgt von einem Tabulatorzeichen.

Anschließend werden die Sätze basierend auf der Position des Tabulatorzeichens auseinandergezogen. Schließlich werden alle gültigen Punkte in den Abkürzungen wiederhergestellt und die Sätze in benachbarten Zellen in derselben Zeile platziert.

Beachten Sie, dass das Makro alles ersetzt, was sich in den ausgewählten Zellen befand, und dass jedoch viele Zellen rechts von der Auswahl erforderlich sind, um die Sätze zu speichern. Aus diesem Grund sollten Sie sicherstellen, dass Sie Ihr ursprüngliches Arbeitsblatt speichern, bevor Sie einen Zellbereich auswählen und das Makro ausführen.

Schließlich möchten Sie vielleicht beachten, dass das Makro nicht perfekt ist. Aus der Sicht eines Grammatikers ist es durchaus akzeptabel, dass eine Abkürzung einen Satz beendet. In diesem Fall schreibt die richtige Interpunktion vor, dass der letzte Punkt in der Abkürzung auch als Endzeit für den Satz dient, wie in diesen beiden kurzen Sätzen:

Sheila earned her Ph.D. She was very happy.

Betrachten Sie nun den folgenden einzelnen Satz:

Sheila earned her Ph.D. from an Ivy League school.

Wenn Sie die beiden Beispiele (die beiden Sätze mit dem einzelnen Satz) vergleichen, gibt es keine Möglichkeit, programmgesteuert zu unterscheiden, ob Ph.D. beendet einen Satz oder wenn er in der Mitte des Satzes vorkommt, ohne zu prüfen, ob das folgende Wort mit einem Großbuchstaben oder einem Anführungszeichen gefolgt von einem Großbuchstaben beginnt. Dies kann sehr schnell sehr komplex werden. Dies gilt außerdem für alle Abkürzungen, nicht nur für Ph.D. Anstatt zu versuchen, alle derartigen Vorkommnisse zu antizipieren und zu behandeln, versucht das oben erwähnte Makro nicht einmal zu erkennen, ob eine Abkürzung einen Satz beendet oder nicht – es behandelt einfach alle Abkürzungen so, als ob sie in der Mitte eines Satzes auftreten.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (12549) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.