EIGENES Überspringen bestimmter Wörter (Microsoft Excel)
Terry verwendet ständig die PROPER-Arbeitsblattfunktion, um die Groß- und Kleinschreibung von Text in seinen Arbeitsblättern zu ändern. Er fragt sich, ob es eine Möglichkeit gibt, die Funktion anzuweisen, bestimmte Wörter zu ignorieren, damit sie nicht mit einem Großbuchstaben beginnen. Es ist nicht ungewöhnlich, dass er nach der Verwendung von PROPER zurückgehen und Wörter wie „the“ oder „an“ in Kleinbuchstaben ändern muss. Wenn PROPER das automatische Ändern solcher Wörter überspringen könnte, wäre dies eine große Hilfe.
Eine Möglichkeit, dies zu erreichen, besteht darin, die Arbeitsblattfunktion SUBSTITUTE in Verbindung mit der Funktion PROPER zu verwenden. Wenn Sie beispielsweise Instanzen des Wortes „The“ mit „the“ suchen möchten, können Sie Folgendes verwenden:
=SUBSTITUTE(PROPER(A1)," The "," the ")
Beachten Sie die Aufnahme des Leerzeichens vor und nach dem, wonach Sie suchen und was Sie ersetzen. Dies stellt sicher, dass nur vollständige Wörter geändert werden. Außerdem wird sichergestellt, dass am Anfang des Zellenwerts oder am Ende keine Änderungen vorgenommen werden.
Wenn Sie nach anderen Wörtern suchen möchten, die ersetzt werden müssen, können Sie einfach die Anzahl der Instanzen von SUBSTITUTE in der folgenden Formel erhöhen:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")
Dies kann natürlich etwas umständlich werden, wenn Sie viele Wörter haben, die Sie von der Änderung ausschließen möchten. In diesem Fall müssen Sie ein Makro verwenden. Das folgende Makro, das als benutzerdefinierte Funktion geschrieben wurde, kann verwendet werden, um alle Wörter in einer Zelle in Anfangsbuchstaben umzuwandeln (genau wie bei PROPER). Stellen Sie jedoch sicher, dass bestimmte definierte Wörter in Kleinbuchstaben geschrieben sind.
Function Title(ByVal ref As Range) As String Dim vaArray As Variant Dim c As String Dim i As Integer Dim J As Integer Dim vaLCase As Variant Dim str As String ' Array contains terms that should be lower case vaLCase = Array("a", "an", "and", "in", "is", _ "of", "or", "the", "to", "with") c = StrConv(ref, 3) 'split the words into an array vaArray = Split(c, " ") For i = 2 To UBound(vaArray) For J = LBound(vaLCase) To UBound(vaLCase) ' compare each word in the cell against the ' list of words to remain lowercase. If the ' Upper versions match then replace the ' cell word with the lowercase version. If UCase(vaArray(i)) = UCase(vaLCase(J)) Then vaArray(i) = vaLCase(J) End If Next J Next i ' rebuild the sentence str = "" For i = 1 To UBound(vaArray) str = str & " " & vaArray(i) Next i Title = Trim(str) End Function
Um das Makro zu verwenden, müssen Sie lediglich Folgendes in Ihrem Arbeitsblatt verwenden:
=Title(A1)
Wenn beim Versuch, dieses Makro auszuführen, eine Fehlermeldung angezeigt wird, stehen die Chancen gut, dass Sie Excel 97 verwenden. Die Funktion „Teilen“ wurde erst in Excel 2000 hinzugefügt, sodass Excel 97-Benutzer eine Fehlermeldung erhalten. Wenn Sie dies tun, fügen Sie das folgende Makro hinzu, das die Funktion der Split-Funktion emuliert.
Function Split(Raw As String, Delim As String) As Variant Dim vAry() As String Dim sTemp As String Dim J As Integer Dim Indx As Integer Indx = 0 sTemp = Raw J = InStr(sTemp, Delim) While J > 0 Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(Left(sTemp, J)) sTemp = Trim(Mid(sTemp, J, Len(sTemp))) J = InStr(sTemp, Delim) Wend Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(sTemp) Split = vAry() End Function
Auf dieser Site finden Sie auch einen zusätzlichen Ansatz zum Erreichen der gewünschten Konvertierung:
http://dmcritchie.mvps.org/excel/proper.htm
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (10559) gilt für Microsoft Excel 97, 2000, 2002 und 2003.
Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: