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: