Juiste Capitalization modificeren

Net als veel mensen, Kirk kopieën gegevens in Excel-werkbladen die ontstaat in andere plaatsen. De informatie die Kirk kopieën meestal is allemaal in CAPS, en hij wil om het te converteren naar wat Excel verwijst als "een goede zaak" (alleen de eerste letter van elk woord een hoofdletter). Het probleem is, de JUISTE werkblad functie, die de conversie doet, heeft geen aandacht besteden aan de woorden: het is kapitaliseren. Zo woorden als een, een, in, en, de, en met zijn alle initiële bedekte. Kirk wil niet dat die woorden (en misschien een paar anderen) gekapitaliseerd.

Er zijn verschillende manieren waarop u kunt dit probleem aan te pakken. Een daarvan is een vrij lange formule voor de conversie:

= Plaatsvervanger (plaatsvervanger (plaatsvervanger (plaatsvervanger (
Plaatsvervanger (plaatsvervanger (PROPER ($ B $ 13), "A", "een");
"Een", "een"); "In"; "in"); "En", "en");
"Het", "het"), "met", "met")

Vergeet niet, dit is allemaal een enkele formule. Het doet het geval conversie, maar dan vervangt de gewenste kleine woorden (een, een, in, en, de, met). Hoewel dit relatief eenvoudig, de bruikbaarheid van de formule wordt beperkt u het aantal woorden waarvoor substituties worden uitgevoerd toenemen.

Misschien een betere aanpak is om een ​​door de gebruiker gedefinieerde functie macro gebruiken om de zaak conversie voor u doen. De volgende functie controles voor een aantal veel voorkomende woorden die niet zou moeten hebben initiële caps, zorg ervoor dat ze zijn kleine letters.

Functie MyProper (str As String)
Dim vExclude
Dim i As Integer
vExclude = Array ("a", "an", "in", "en", _
"De", "met", "is", "at")

Application.Volatile
str = StrConv (str, vbProperCase)
Voor i = LBound (vExclude) Om UBound (vExclude)
str = Application.WorksheetFunction. _
Plaatsvervanger (str, "" & _
StrConv (vExclude (i), vbProperCase) _
& "", "" & VExclude (i) en "")
Volgende
MyProper = str
End Function

Woorden kunnen worden toegevoegd aan de array, en de code detecteert automatisch de aanvullingen en controles voor die toegevoegde woorden. Kennisgeving, maar ook, dat de code voegt een spatie voor en na elk woord in de array als het doet haar controle. Dit is zo dat je niet de code aanbrengen van wijzigingen in delen van woorden (zoals "en" zijn binnen de "stand") of om woorden aan het begin van een zin te hebben. U kunt de functie te gebruiken binnen een werkblad op deze manier:

= MyProper (B7)

Dit gebruik van de gewijzigde tekst terug zonder de originele tekst in B7 aanpassen.

Als u wilt, kunt u een functie die zijn lijst van woorden kost van een benoemd bereik in de werkmap gebruiken. De volgende functie maakt gebruik van een reeks cellen genaamd MyList, met een enkel woord per cel. Zij veronderstelt dat deze lijst is in een werkblad genaamd woordenlijst.

Functie ProperSpecial (cX als Waaier)
'RNG = doelcel

Dim c als Waaier
Dim Stemp als Koord

Stemp = Application.WorksheetFunction.Proper (cX.Value)
Voor Elke c In werkbladen ("woordenlijst"). Range ("MyList")
Stemp = Application.WorksheetFunction.Substitute (_
Stemp, Application.WorksheetFunction.Proper (_
"" & C.Value & ""), ("" & c.Value & ""))
Volgende c

ProperSpecial = Stemp
End Function

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (11.267) is van toepassing op Microsoft Excel 2007 en 2010. U kunt een versie van deze tip voor de oudere menu-interface van Excel hier vinden: Juiste Capitalization wijzigen.