Banner

štvrtok, 30. mája 2013

Ako sa zbaviť diakritiky v slove – funkcia =CistyText()

 

Ako ste si už všimli, sága vlastných funkcií a makier pokračuje. Dnes som sa zamyslel nad otázkou, ako nám môžu slová s diakritikou skomplikovať život.

Určite ste aspoň raz museli ručne kontrolovať názvy firiem, ktoré kedysi zadali účtovníčky ručne do systému a zrazu, keď finalizujete report, tak sa vám v kontingenčnej tabuľke zbytočne zobrazí napríklad: Peter Tabiš s.r.o. a Peter Tabis s.r.o.

Tým pádom vám “totály” nesedia a máte v tom bordel. To všetko len preto, lebo náš Slovenský spolu s Českým jazykom obsahujú písmenka typu é, í, á atď.

Ja som si pripravil zoznam znakov, ktoré sa najviac vyskytujú:

image

Tieto znaky som spojil a použil v nasledujúcom skripte:

Function CistyText(SpinavyText As String)
'funkcia, ktorá vyčistí text od diakritiky

Dim Stare As String
Dim Nove As String
Dim i As Integer

'nadefinované konštanty, v ktorých sú spojené znaky s diakritikou a bez nej
Const SpinavePismenka = "áćĆĎéÉíĹĺńŃóÓŕśŔŚťúÚýźŹÁčČďěĚÍĽľňŇôÔřšŘŠŤůŮÝžŽ"
Const CistePismenka = "acCDeEiLlnNoOrsRStuUyzZAcCdeEiLlnNoOrsRSTuUYzZ"

'pre každý znak z SpinavePismenka nájde alternatívny z CistePismenka a ak sa nachádza v SpinavyText tak ho nahradí
For i = 1 To Len(SpinavePismenka)
Stare = Mid(SpinavePismenka, i, 1)
Nove = Mid(CistePismenka, i, 1)
SpinavyText = Replace(SpinavyText, Stare, Nove)
Next

'Vráti očistený text
CistyText = SpinavyText

End Function

Výsledok v praxi vyzerá nasledovne:

image

Takto vyčistený text si môžete upraviť buď na všetky malé alebo veľké písmená. Tým pádom by sa mala eliminovať akákoľvek manuálne vytvorená chyba a reporty by mali fungovať ako hodinky Úsmev

Sledujte Ďalšie VBA vychytávky a nezabudnite na FB skupinu Úsmev

Žiadne komentáre:

Zverejnenie komentára

Poznámka: Komentár môže zverejniť iba člen tohto blogu.