W Excelu nie ma funkcji, która by usuwała polskie ogonki a dokładniej mówiąc zastępowała litery z ogonkami ich łacińskimi odpowiednikami. Przykładowo tekst żółw powinien być zamieniony na tekst zolw.
Tutaj z pomocą przychodzi VBA. Oto prosta funkcja:
Public Function UsunPolskieOgonki(ByVal Text As String) As String
Text = Replace(Text, "ę", "e")
Text = Replace(Text, "ó", "o")
Text = Replace(Text, "ą", "a")
Text = Replace(Text, "ś", "s")
Text = Replace(Text, "ł", "l")
Text = Replace(Text, "ż", "z")
Text = Replace(Text, "ź", "z")
Text = Replace(Text, "ć", "c")
Text = Replace(Text, "ń", "n")
Text = Replace(Text, "Ę", "E")
Text = Replace(Text, "Ó", "O")
Text = Replace(Text, "Ą", "A")
Text = Replace(Text, "Ś", "S")
Text = Replace(Text, "Ł", "L")
Text = Replace(Text, "Ż", "Z")
Text = Replace(Text, "Ź", "Z")
Text = Replace(Text, "Ć", "C")
Text = Replace(Text, "Ń", "N")
UsunPolskieOgonki = Text
End Function
W tej funkcji mamy użytą funkcję Replace 18 razy (gdyż mamy 9 ogonków zapisanych małymi literami i 9 ogonków zapisanych dużymi literami). Jeśli taka rozwleczona funkcja się Tobie nie podoba to możemy „stablicować” ogonki i ich łacińskie odpowiedniki a następnie wywołać funkcję Replace w pętli for.
Public Function UsunPolskieOgonki2(ByVal Text As String) As String
Dim Ogonki()
Dim Lacinskie()
Dim a As Long
Ogonki = Array("ę", "ó", "ą", "ś", "ł", "ż", "ź", "ć", "ń", "Ę", "Ó", "Ą", "Ś", "Ł", "Ż", "Ź", "Ć", "Ń")
Lacinskie = Array("e", "o", "a", "s", "l", "z", "z", "c", "n", "E", "O", "A", "S", "L", "Z", "Z", "C", "N")
For a = LBound(Ogonki) To UBound(Ogonki)
Text = Replace(Text, Ogonki(a), Lacinskie(a))
Next a
UsunPolskieOgonki2 = Text
End Function