ich habe Artikeltexte, die ich in unseren Webshop importieren muss. Problem: unser Lieferant schreibt alles Groß, mein Chef möchte klassische Groß-kleinschreibung.
Beispiel: HORNADY CUSTOM GRADE SERIES III 2-TLG MATRIZENSATZ 5,45X39/.221
Mit der Excel-Funktion löse ich das zumindest zum Teil: HORNADY Custom Grade Series Iii 2-Tlg Matrizensatz 5,45X39/.221
Zum Teil weill natürlich die römische Ziffer hinter "Series" erhalten bleiben soll, auch im konvertierten Text soll "Series III" stehen.
Irgendjemand eine Idee? Ich möchte nur ungern 180 Artikeltexte von Hand ändern
18.12.2024, 11:40 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2024, 12:07 von ws-53.)
In Power Query gibt es dazu direkt eine Funktion. Aber egal, ob Formel, Makro oder Power Query, meist entsprechen die Ergebnisse nicht zu 100% den tatsächlichen Wunschergebnissen, da es Ausnahmen gibt. Denn "MODELLAUTO BMW X3 soll wohl kaum in "Modellauto Bmw X3" umgewandelt werden. Auch "200 CM" soll wohl kaum in "200 Cm" transformiert werden.
Das lässt sich aber in einem Makro oder einer Power Query recht gut regeln. Wobei ich es dann mit Power Query machen würde.
Zitat:... die ich in unseren Webshop importieren muss.
Vermutlich gibt es da noch einige zusätzliche Schritte der Datenaufbereitung, bis das Ergebnis für den Webshop importiert werden kann. Diese sollten sich auch alle in die Power Query integrieren lassen.
18.12.2024, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2024, 11:43 von Grosskranfan.)
Ausprobiert, die römischen Ziffern hinter "Series" sind nach wie vor "komisch" also "Iii" oder "Iv" Hmm... mit RegEx habe ich mich nie auseinandergesetzt ...
18.12.2024, 12:18 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2024, 12:26 von Warkings.)
Wenn es nicht zu viele Ausnahmen sind, könnte man folgenden VBA Code verwenden
Code:
Option Explicit
Function ProperCaseWithExceptions(inputStr As String) As String Dim words As Variant Dim i As Long Dim result As String Dim exceptions As Variant Dim word As String
' Define the words that should remain in upper case ' improvement: put values on a sheet for better maintenance ... exceptions = Array("BMW", "I", "II,", "III", "IV", "V")
' Split the input string into words words = Split(inputStr, " ")
' Loop through each word For i = LBound(words) To UBound(words) word = words(i)
' Check if the word is in the exceptions array If IsInArray(UCase(word), exceptions) Then result = result & word & " " ' Keep it in upper case Else ' Convert to Proper Case result = result & Application.WorksheetFunction.Proper(word) & " " End If Next i
' Remove trailing space and return the result ProperCaseWithExceptions = Trim(result) End Function
Function IsInArray(val As String, arr As Variant) As Boolean Dim element As Variant IsInArray = False For Each element In arr If element = val Then IsInArray = True Exit Function End If Next element End Function