Czasami chcę zamienić polskie ogonki na litery bez ozdobników (np. ą na a). Przykład: piszemy w Excelu formułę, która na podstawie imienia i nazwiska generuje np. loginy ale nie chcemy aby w owych loginach były polskie ogonki. Niestety, ale nie ma jakiejś gotowej formuły, która to robi. Natomiast mam 2 rozwiązania:
Pierwsze rozwiązanie to użycie funkcji PODSTAW. Funkcja ta pozwala zamienić jeden tekst na inny np.
=PODSTAW(A2; "przedmiot"; "produkt")
Ta powyższa funkcja wstawia tekst znajdujący się w komórce A2 ale jeśli w tym tekście znajdowało się słowo przedmiot to zostanie ono zastąpione słowem produkt. W podobny sposób możemy pozbyć się polskich ogonków. Niestety, ale funkcja ta nie pozwala na tablicowe przyjmowanie argumentów, więc należy zagnieździć funkcję podstaw wewnątrz funkcji podstaw. Ponieważ mamy w sumie 18 "polskich ogonków" to zagnieździmy tę funkcję 17 razy. Wyjdzie nam taki oto potworek:
=PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(PODSTAW(A2; "ą"; "a"); "ć"; "c");"ę";"e");"ł";"l");"ń"; "n");"ó";"o");"ś";"s");"ź";"z");"ż";"z"); "Ą"; "A"); "Ć"; "C");"Ę";"E");"Ł";"L");"Ń"; "N");"Ó";"O");"Ś";"S");"Ź";"Z");"Ż";"Z")
Rozwiązanie może i mało eleganckie, ale ważne że działa.
Drugi sposób, jaki mi przychodzi do głowy to napisanie prostej funkcji w VBA (jak to się robi opisałem w notce: Dodawanie nowej funkcji do programu Excel znalezionej w Internecie). Oto przykładowa funkcja:
Function UsunPolskieLitery(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")
UsunPolskieLitery = Text
End Function
Po dodaniu owej funkcji w miejscu gdzie chcemy z niej skorzystać wystarczy wpisać taką oto formułę:
=UsunPolskieLitery(A2)
Rozwiązanie bardziej eleganckie, ale niestety nie zawsze możemy korzystać z makr.