Projektując jakiś arkusz, który będzie udostępniany innym użytkownikom możemy się spotkać z sytuacją, gdy klient posiada wersję Excela, która nie obsługuje wymaganej funkcjonalności. Przykładowo jakiś czas temu udostępniłem darmową usługę zamiana liczby na jej słowny odpowiednik po polsku i po angielsku. Oba te rozwiązania korzystają z funkcji WEBSERVICE, która nie działa:
- W Microsoft Excel dla komputerów Mac
- W Excelu starszym niż wersja 2013
Za pomocą funkcji INFO możemy sprawdzić jaką wersję Excela ma dana osoba oraz czy jest to Excel dla systemu Windows czy MacOS. Można wpisać magiczną formułę która w razie wykrycia nieodpowiedniej wersji wyświetli w komórce komunikat z informacją że mamy nieodpowiednią wersję.
Sprawdzanie systemu operacyjnego
Najpierw zajmijmy się prostszym przypadkiem. Pakiet Microsoft Excel istnieje w dwóch wersja: dla systemu Windows i dla MacOS. Sprawdźmy, czy użytkownik korzysta z Excela w wersji dla systemu MacOS. W tym celu sformatuj komórkę np. zmieniając jej kolor tekstu na czerwony i użyjmy pogrubienia. Następnie do tej komórki wpisz formułę:
=JEŻELI(INFO("SYSTEM")="mac";"Ten arkusz nie działa na macu";"")
Jeśli funkcja INFO z parametrem "SYSTEM" zwróci ciąg znaków mac to oznacza, że skoroszyt został otworzony w Excelu dla MacOS. Wtedy funkcja JEŻELI zwróci do komórki wartość Ten arkusz nie działa na macu. Jeśli skoroszyt został otworzony w Excelu dla systemu Windows funkcja JEŻELI zwróci pusty ciąg znaków (komórka z ostrzeżeniem będzie pusta).
Sprawdzanie wersji Excela
Wciąż sporo osób korzysta z pakiet Excel w wersjach starszych od 2013. Takim osobom również warto jest wyświetlić ostrzeżenie. Funkcja INFO z parametrem "WERSJA" zwraca numerek, który informuje jaka jest używana wersja. Niestety, ale jeśli ktoś otworzy arkusz w Excelu w anglojęzycznej wersji to funkcja =INFO("WERSJA") zwróci błąd #VALUE!. O dziwo, jeśli wpiszę tę funkcję w wersji dla anglojęzycznego Excela tj. =INFO("RELEASE") to owa funkcja działa prawidłowo zarówno w spolszczonej jak i angielskiej wersji Excela.
Wartość zwracana przez funkcję INFO("RELEASE")
- 12.0 – Office 2007
- 13.0 – nie istnieje, w Microsofcie ludzie czczą zabobony 😉
- 14.0 – Office 2010
- 15.0 – Office 2013
- 16.0 – Office 2016, 2019, Office 365
Ponieważ Excel zwracany numer traktuje jako tekst, więc formuła sprawdzająca czy zwrócona liczba jest mniejsza od 15 jest nieco zagmatwana:
=JEŻELI(WARTOŚĆ(LEWY(INFO("RELEASE");2))<15;"Wymagany Excel 2013 lub nowszy";"")
Funkcja LEWY wyciąga z funkcji INFO dwa pierwsze znaki (te które się znajdują przed kropką) następnie zwrócony ciąg znaków jest opakowany w funkcję WARTOŚĆ która zamienia tekst na liczbę. Porównanie <15 mówi nam, że wersja nie może być starsza niż 15 (Excel 2013). Funkcja jeżeli zwraca komunikat z ostrzeżeniem gdy używamy starszej wersji programu Excel lub pusty ciąg znaków, gdy korzystamy z wersji 2013 lub nowszej.
Oto efekt uruchomienia skoroszytu w systemie Windows z Excelem 2013 lub nowszym

Oto efekt uruchomienia skoroszytu w starszym Excelu

Oto Efekt uruchomienia skoroszytu na komputerze z systemem Mac OS

W obu powyższych przypadkach zaświeciło się jakieś ostrzeżenie. Funkcja WEBSERVICE niby działa (a dokładniej jest wyświetlony jej stan sprzed otworzenia skoroszytu), ale do czasu aż np. nie zmienię zawartości komórki B2, wtedy zostanie wyświetlony komunikat z błędem #NAZWA? (lub #NAME? W przypadku anglojęzycznej wersji)
Kłopotliwa funkcja INFO
Excel ma to do siebie, że większość funkcji ma spolszczone nazwy. Ale prawda jest taka, że te nazwy są poddawane regionalizacji „w locie”. Czyli jeśli używasz spolonizowanej wersji Excela i użyjesz w skoroszycie funkcji SUMA a następnie go wyślesz do Johna Smitha z USA to on używając anglojęzycznej wersji Excela zobaczy w tym miejscu funkcję SUM. Z kolei John jeśli w skoroszycie użyje funkcji AVG i wyśle do Ciebie poprawiony plik to Ty w tym miejscu zobaczysz funkcję ŚREDNIA.
Z funkcją INFO sprawa ma się nieco inaczej. Otóż Excel „w locie” tłumaczy nazwy funkcji, ale nie parametry. Więc jak wpiszesz =INFO("WERSJA") to u Johna wyskoczy błąd #VALUE! Gdyż anglojęzyczny Excel nie przetłumaczy parametru WERSJA na RELEASE. Co ciekawe w drugą stronę to zadziała, jeśli John wpisze =INFO("RELASE") to spolszczony Excel zrozumie anglojęzyczny parametr RELASE i zwróci numer wersji programu MS Excel.
Anglojęzyczny Excel

Polskojęzyczny Excel

LibreOffice Calc
W przypadku LibreOffice istnieje możliwość sprawdzenia z jakiego systemu operacyjnego korzysta użytkownik. Funkcja:
=INFO("system")
Może zwrócić jedną z następujących wartości:
- LINUX – Linux
- MACOSX – Apple Mac OS X
- SOLARIS – system Solaris
- WNT – Microsoft Windows