Frank muss täglich 4.000-5.000 Namen von Großbuchstaben in Großbuchstaben umwandeln. Die PROPER-Funktion liefert ihm ein passables Ergebnis, das noch manuell überprüft und bearbeitet werden muss, um mit Akronymen usw. fertig zu werden, die nicht verdeckt werden sollten. Franks Meinung ist, dass er wahrscheinlich die Funktion benötigt, um eine Suche nach einer Art Ausnahmeliste durchzuführen, und er fragt sich, ob es eine solche Möglichkeit zur Fallkonvertierung in Excel gibt.

Der beste Weg, dies zu handhaben, hängt von den Daten ab, mit denen Sie beginnen. Angenommen, die folgenden Werte beziehen sich auf zwei Zellen in Ihren Quelldaten:

Big John's Mining, LLC USA

Wenn Ihre Ausnahme darin besteht, dass der Fall von LLC nicht geändert werden soll, benötigen Sie eine Methode, mit der Teile jeder Zelle untersucht werden. Wenn Ihre Ausnahme darin besteht, dass der Fall USA nicht geändert werden soll, benötigen Sie eine Methode, mit der der Inhalt jeder Zelle als Ganzes bewertet wird.

Es ist einfacher, sich um den zweiten Datentyp zu kümmern als um den ersten. Schauen wir uns das also zuerst an. Die folgende Formel basiert auf einer Ausnahmeliste, die sich irgendwo in Ihrer Arbeitsmappe befindet. Diese Ausnahmeliste muss als benannter Bereich unter dem Namen Exceptions eingerichtet werden.

Wenn sich Ihre Originaldaten in Spalte A befinden, können Sie diese Formel in Zelle B1 einfügen und dann so weit wie nötig nach unten kopieren:

=IFERROR(VLOOKUP(A1,Exceptions,1,0),PROPER(A1))

Jede Zelle, die vollständig mit etwas in Ihrer Ausnahmetabelle übereinstimmt, sieht genauso aus wie die Ausnahme, und auf jede Zelle, die nicht vollständig übereinstimmt, wird PROPER angewendet.

Für den ersten Datentyp (bei dem Sie in jeder Zelle nach Ausnahmen suchen müssen) ist es am besten, sich auf ein Makro zu verlassen. Das Folgende ist ein Beispiel für eines, das Sie als Ausgangspunkt verwenden können.

Function MyProper(ByVal r As Range) As String     Dim vExceptions As Variant     Dim vReplacements As Variant     Dim vWords As Variant     Dim iRaw As String     Dim J As Integer     Dim K As Integer     Dim sTemp As String

' Exceptions array     vExceptions = Array("USA", "PhD", "LLC", "and", _       "Kentucky", "D.C.")



' Replacements array     vReplacements = Array("USA", "PhD", "LLC", "and", _       "KY", "DC")



' Convert the text to Proper case and store in a string     iRaw = StrConv(r, 3)

' Split the words into an array     vWords = Split(iRaw, " ")

For J = LBound(vWords) To UBound(vWords)

For K = LBound(vExceptions) To UBound(vExceptions)

If UCase(vWords(J)) = UCase(vExceptions(K)) Then                 vWords(J) = vReplacements(K)

End If         Next K     Next J

' Rebuild the cell contents     sTemp = ""

For J = LBound(vWords) To UBound(vWords)

sTemp = sTemp & " " & vWords(J)

Next J

MyProper = Trim(sTemp)

End Function

Dies ist eine benutzerdefinierte Funktion, sodass Sie Folgendes verwenden können, um eine Konvertierung Ihrer Quelldaten durchzuführen:

=MyProper(A1)

Die Geschwindigkeit des Makros hängt von zwei Faktoren ab: Wie oft es in Ihrem Arbeitsblatt verwendet wird (wie viele Wörter Sie ändern müssen) und wie viele Ausnahmen Sie im Makro prüfen. Mit 4.000 bis 5.000 Wörtern und etwa einem Dutzend Ausnahmen sollte das Makro immer noch schnell genug funktionieren, um akzeptabel zu sein. (Es wird sicherlich schneller sein als Ihre Überprüfung von Hand!)

Die Funktion basiert auf zwei Arrays, vExceptions und vReplacements. Der Zelleninhalt wird mithilfe der Split-Funktion in das vWords-Array aufgelöst. (Nachdem die Split-Funktion ausgeführt wurde, enthält jedes Element des vWords-Arrays ein Wort, das durch das Auftreten eines Leerzeichens definiert wird.) Jedes Element des vWords-Arrays wird dann mit jedem Element des vExceptions-Arrays verglichen. Wenn sie übereinstimmen (oder besser gesagt, wenn die Großbuchstaben von jedem von ihnen übereinstimmen), wird das entsprechende Element des vReplacements-Arrays anstelle des ursprünglichen Wortes verwendet. Dieser Ansatz bietet den zusätzlichen Vorteil, dass Sie Akronyme ersetzen können, wie dies beim Ersetzen von Kentucky durch KY und DC durch DC der Fall ist.

Denken Sie daran, dass ich erwähnt habe, dass dieses Makro nur ein guter Ausgangspunkt ist.

Sie müssen es natürlich ändern, um Ihre Ausnahmen und Ersetzungslisten widerzuspiegeln. Darüber hinaus müssen Sie verstehen, dass Interpunktion als Teil der von der Split-Funktion explodierten „Wörter“ betrachtet wird, wenn Ihre Originaldaten Interpunktion enthalten. Wenn die Originaldaten beispielsweise „Davis, LLC, Stanton“ enthalten, werden die Kommas als Teil der Wörter betrachtet, denen sie folgen. (Denken Sie daran, dass die Aufteilung an Leerzeichen erfolgt.) Daher erhalten Sie in Ihrem Ergebnis „Davis, Llc, Stanton“, da die „LLC“ im Array „vExceptions“ nicht mit der „LLC“ in den vWords übereinstimmt Array.

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

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