Wie viele Menschen kopiert Kirk Informationen in Excel-Arbeitsblätter, die von anderen Orten stammen. Die Informationen, die Kirk normalerweise kopiert, sind alle in CAPS und er möchte sie in das konvertieren, was Excel als „richtige Groß- und Kleinschreibung“ bezeichnet (nur der erste Buchstabe jedes Wortes wird groß geschrieben). Das Problem ist, dass die PROPER-Arbeitsblattfunktion, die die Konvertierung durchführt, die großgeschriebenen Wörter nicht berücksichtigt. Daher sind Wörter wie a, an, in und, the und with alle mit einem Anfangsbuchstaben versehen. Kirk möchte nicht, dass diese Wörter (und vielleicht auch einige andere) groß geschrieben werden.

Es gibt verschiedene Möglichkeiten, wie Sie dieses Problem angehen können. Eine ist, eine ziemlich lange Formel zu verwenden, um die Konvertierung durchzuführen:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE( SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a "); " An ";" an ");" In ";" in ");" And ";" and "); " The ";" the ");" With ";" with ")

Denken Sie daran, dies ist alles eine einzige Formel. Es führt die Konvertierung in Groß- und Kleinschreibung durch, ersetzt dann jedoch die gewünschten Kleinbuchstaben (a, an, in und, the, with). Obwohl dies relativ einfach ist, wird die Nützlichkeit der Formel eingeschränkt, wenn Sie die Anzahl der Wörter erhöhen, für die Substitutionen durchgeführt werden sollten.

Möglicherweise ist es besser, ein benutzerdefiniertes Funktionsmakro zu verwenden, um die Fallkonvertierung für Sie durchzuführen. Die folgende Funktion sucht nach einigen gebräuchlichen Wörtern, die keine Anfangsbuchstaben haben sollten, und stellt sicher, dass sie in Kleinbuchstaben geschrieben sind.

Function MyProper(str As String)

Dim vExclude     Dim i As Integer     vExclude = Array("a", "an", "in", "and", _       "the", "with", "is", "at")



Application.Volatile     str = StrConv(str, vbProperCase)

For i = LBound(vExclude) To UBound(vExclude)

str = Application.WorksheetFunction. _           Substitute(str, " " & _           StrConv(vExclude(i), vbProperCase) _           & " ", " " & vExclude(i) & " ")

Next     MyProper = str End Function

Dem Array können Wörter hinzugefügt werden, und der Code erkennt automatisch die Hinzufügungen und sucht nach diesen hinzugefügten Wörtern. Beachten Sie auch, dass der Code vor und nach jedem Wort im Array ein Leerzeichen hinzufügt, während er es überprüft. Dies ist so, dass Sie nicht den Code haben, der Änderungen an Teilwörtern (wie „und“ innerhalb von „stehen“) oder an Wörtern am Anfang eines Satzes vornimmt. Sie können die Funktion in einem Arbeitsblatt folgendermaßen verwenden:

=MyProper(B7)

Diese Verwendung gibt den geänderten Text zurück, ohne den Originaltext in B7 anzupassen.

Wenn Sie möchten, können Sie eine Funktion verwenden, deren Wortliste aus einem benannten Bereich in der Arbeitsmappe stammt. Die folgende Funktion verwendet einen Zellbereich mit dem Namen MyList mit einem einzelnen Wort pro Zelle. Es wird davon ausgegangen, dass sich diese Liste in einem Arbeitsblatt mit dem Namen WordList befindet.

Function ProperSpecial(cX As Range)

' rng = target Cell

Dim c As Range     Dim sTemp As String

sTemp = Application.WorksheetFunction.Proper(cX.Value)

For Each c In Worksheets("WordList").Range("MyList")

sTemp = Application.WorksheetFunction.Substitute( _           sTemp, Application.WorksheetFunction.Proper( _           " " & c.Value & " "), (" " & c.Value & " "))

Next c

ProperSpecial = sTemp End Function

_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 (11267) gilt für Microsoft Excel 2007 und 2010. Eine Version dieses Tippes für die ältere Menüoberfläche von Excel finden Sie hier: