Korzystając z anglojęzycznej wersji Excela, musimy wpisywać nazwy funkcji w tym języku. Jeżeli do tej pory używaliśmy polskiego Excela – możemy czuć się nieco zagubieni. A co jeżeli chcemy korzystać z polskich funkcji w anglojęzycznym Excelu? Da się to zrobić!
Autokorekta?…
Przyznam, że na pierwszy rzut oka, temat wydał mi się nie do przeskoczenia. Po dłuższej refleksji, postanowiłem się z nim zmierzyć i wykorzystać do tego celu mało popularną opcję autokorekty.
Domyślnie służy ona do poprawiania błędów pisowni w arkuszu. Przykład? Słowo ktory, automatycznie zamienia się na który. Warto odnotować, że autokorekta działa nie tylko w Excelu. Reguły zdefiniowane w tym programie będą obowiązywać we wszystkich aplikacjach Office.
Możemy pisać w komórkach arkusza lub na pasku formuły – mechanizm zadziała w obu przypadkach.
Tabela odpowiedników
W pierwszej kolejności musimy utworzyć tabelę z listą polskich funkcji wraz z ich angielskimi odpowiednikami. Możemy wypisać wszystkie funkcje, lub tylko te, których będziemy używać.

Do nazw funkcji obowiązkowo musimy dodać pojedynczy nawias. W przeciwnym razie reguła nie zadziała!
Kod makra
Następnie użyjemy poniższego makra, aby dodać sparowane funkcje do autokorekty.
Sub DodajDoAutoKorekty()
' Makro dodaje do autokorekty sparowane nazwy funkcji.
' Nazwy polskie mają zostać automatycznie zamienione na angielskie.
Dim avTabela As Variant ' Tabela danych wraz z nagłówkami
Dim sNazwaPL As String ' Nazwa funkcji po polsku
Dim sNazwaEN As String ' Nazwa funkcji po angielsku
Dim x As Long ' Licznik pętli
' Przenieś do tablicy dwukolumnowy zakres. W pierwszej kolumnie
' znajdują się nazwy polskie, w drugiej angielskie odpowiedniki
1 avTabela = Arkusz1.Range("A1:B6")
' Przejdź w pętli przez wszystkie funkcje
2 For x = LBound(avTabela, 1) To UBound(avTabela, 1)
3 sNazwaPL = UCase(avTabela(x, 1)) ' Zaczytaj polską nazwę
4 sNazwaEN = UCase(avTabela(x, 2)) ' Zaczytaj nazwę angielską
' Dodaj do autokorekty!
5 Application.AutoCorrect.AddReplacement _
What:=sNazwaPL, Replacement:=sNazwaEN
6 Next x '// For x = LBound(avTabela, 1) To UBound(avTabela, 1)
End Sub
Odpowiedniki nazw zostały dodane do słownika.

Efekt końcowy
Jak widać na poniższym obrazku, zamiana działa. Możemy w anglojęzycznym Excelu korzystać z polskich nazw funkcji – lub odwrotnie.

Plik XLSM
W pliku poniżej znajduje się makro, które kasuje wprowadzone zmiany autokorekty.
