Kilka dni temu otrzymałem e-maila od jednego Czytelnika, w którym zapytał mnie o to, czy jest możliwość korzystania z polskich nazw funkcji we włoskiej wersji Excela.
Międzynarodowy Arkusz Makr
Temat wydał mi się z góry przegrany. Co prawda istnieje coś takiego jak międzynarodowy arkusz makr. Pozwala on tłumaczyć formuły napisane w języku angielskim na język lokalny (wersja Excela). Tłumaczenie formuł z polskiego na włoski (język lokalny) to jednak inna para kaloszy.
Autokorekta
Dzisiaj wpadłem na pomysł, że można spróbować wykorzystać do tego mało popularną opcję autokorekty. Domyślnie służy ona do poprawiania błędów pisowni w arkuszu – słowo sie można np. automatycznie zamienić na się. Podstawić nowy wpis można zarówno w komórkach arkusza jak i na pasku formuły.
Za cel postawiłem sobie korzystanie z polskich formuł w anglojęzycznej wersji Excela (język lokalny).
Tabela Odpowiedników
W pierwszej kolejności utworzyłem plik z listą polskich funkcji wraz z ich angielskimi odpowiednikami.

Kod Makra
Następnie użyłem poniższego makra, aby dodać nazwy wszystkich funkcji do autokorekty.
Sub TranslateFunctions()
Dim varFunctions As Variant
Dim sPolish As String
Dim sEnglish As String
Dim lCounter As Long
' Przenieś do tablicy dwukolumnowy zakres. W pierwszej kolumnie
' znajdują się nazwy polskie, w drugiej angielskie odpowiedniki
varFunctions = Sheet1.Range("Funkcje")
' Przejdź w pętli przez wszystkie funkcje i dodaj je po kolei
For lCounter = LBound(varFunctions, 1) To UBound(varFunctions, 1)
sPolish = LCase(varFunctions(lCounter, 1))
sEnglish = LCase(varFunctions(lCounter, 2))
Application.AutoCorrect.AddReplacement _
What:=sPolish, Replacement:=sEnglish
Next lCounter
End Sub
Faktycznie, odpowiedniki nazw zostały dodane do słownika autokorekty.

Efekty
Wpisanie na pasku formuły frazy PODAJ.POZYCJĘ miało automatycznie zamienić ją na MATCH, wpisanie SUMA.JEŻELI na SUMIF itd.
Rozwiązanie, jak pokazują poniższe screeny, nie jest jednak idealne :-(.


Funkcja PODAJ.POZYCJĘ zostaje prawidłowo zamieniona na MATCH.

Po wpisaniu WYSZUKAJ fraza jest automatycznie zamieniana na LOOKUP z kropką na końcu. Co za tym idzie, nie jest możliwe wpisanie frazy WYSZUKAJ.PIONOWO.
Podobnie rzecz ma się z funkcjami zaokrąglającymi, wpisanie ZAOKR. od razu zamienia wpis na ROUND z kropką na końcu. W Excelu nie występuje natomiast funkcja LICZ, a co za tym idzie funkcje takie jak LICZ.JEŻELI, LICZ.PUSTE, LICZ.WARUNKI zamieniane są automatycznie na ich angielskie odpowiedniki.
Uwaga!
Aby rozwiązać problemy opisane w tej poradzie wystarczy dodać znak ( na końcu funkcji polskiej i angielskiej. W takiej sytuacji wpisując frazę =WYSZUKAJ.PIONOWO() Excel automatycznie zamieni ją na =VLOOKUP(). Tak więc, możemy bez problemu w angielskim Excelu podawać nazwy polskich funkcji.