ID tematu: 76503
 |
Nieoczekiwane zastosowanie funkcji TŁUMACZ |
Autor |
Wiadomość |
Maciej Gonet
Excel Expert

Wersja: Win Office 365
Pomógł: 3616 razy Posty: 10635
|
Wysłany: 11-03-2025, 20:08 Nieoczekiwane zastosowanie funkcji TŁUMACZ
|
|
|
Od niedawna, mniej więcej od początku tego roku Excel 365 został wzbogacony o dwie nowe funkcje TŁUMACZ (ang. TRANSLATE) i WYKRYJJĘZYK (ang. DETECTLANGUAGE). Jak łatwo się domyślić, funkcje służą do tłumaczenia tekstów z jednego języka na drugi, przy czym język oryginału może być określony automatycznie.
Funkcje wykorzystują usługi tłumaczeniowe firmy Microsoft, dlatego do ich poprawnego działania niezbędne jest połączenie z Internetem.
Składnia funkcji:
Kod: | =TŁUMACZ(tekst; [source_language]; [target_language])
=WYKRYJJĘZYK(tekst)
| Argumenty
tekst — tekst do przetłumaczenia lub do analizy; powinien być ujęty w cudzysłów lub być odwołaniem do komórki zawierającej jego treść,
source_language (język źródłowy) — kod języka źródłowego (np. "en" dla języka angielskiego lub "es" dla języka hiszpańskiego); jeśli nie zostanie podany, język zostanie automatycznie wykryty na podstawie analizy tekstu. Aby uniknąć błędnej interpretacji zaleca się określenie języka, jeśli jest znany, zwłaszcza w przypadku krótszych tekstów.
target_language (język docelowy) — kod języka docelowego (ta sama lista kodów, co w przypadku języka źródłowego). Jeśli nie zostanie podany, będzie użyty język systemowy.
Funkcja TŁUMACZ zwraca tekst tłumaczenia na język docelowy. Generowana jest tylko jedna wersja tłumaczenia, więc w przypadku krótkich tekstów, które można odczytać w różny sposób, tłumaczenie może być nietrafne. Funkcja WYKRYJJĘZYK zwraca kod języka wykrytego automatycznie.
Kody języków składają się zazwyczaj z dwóch liter, najczęściej małych. W zasadzie nie ma znaczenia, czy zapisujemy je małymi, czy wielkimi literami. Ale spotkałem się z przypadkiem zablokowania odpowiedzi w razie użycia wielkiej litery.
Jednorazowo (w jednej komórce) można przetłumaczyć około 3000 znaków.
Dokumentacja podaje listę ponad 150 obsługiwanych języków. Co mnie dziwi, nie ma wśród nich łaciny.
Zapis liczby słownie
Oprócz typowych i oczywistych zastosowań funkcja TŁUMACZ może mieć również zastosowanie nietypowe. Od dawna znany jest problem zapisu liczb (najczęściej kwot pieniężnych) słownie. Jest to potrzebne na przykład przy automatycznym generowaniu faktur itp. dokumentów. Dotychczas najczęściej ten problem rozwiązywano za pomocą VBA, w Sieci można znaleźć różne przykłady. Po wprowadzeniu funkcji LAMBDA pojawiła się również alternatywna ścieżka rozwiązania tego problemu. W każdym przypadku rozwiązania te są dość złożone ze względu na komplikację reguł gramatycznych naszego języka.
Tymczasem w Excelu chyba od zarania jest dostępna tajemnicza funkcja BAT.TEKST, z której prawie nikt u nas nie korzysta. Funkcja ta służy właśnie do zapisu kwoty waluty słownie, ale w języku tajskim! Konia z rzędem temu, kto wie dlaczego właśnie ten język i ta waluta zostały uhonorowane przez twórców Excela taką funkcją. Język ten nie jest szeroko znany, ale dzięki funkcji TŁUMACZ możemy go przybliżyć. Schemat jest podobny do naszego: podstawowa waluta nazywa się baht i dzieli się na 100 satangów. Przy tłumaczeniu uwzględniane są liczby dziesiętne z dwoma miejscami po przecinku (również ujemne).
Tłumaczenie niezbyt dużych liczb (mniej więcej do miliona) jest poprawne, natomiast w przypadku większych liczb, gdy wszystkie pozycje są wypełnione, zdarzają się pominięcia. W sposób niekonsekwentny stosowane są wielkie litery, kropka na końcu frazy oraz spójnik "i" pomiędzy składnikami tłumaczenia. Również odmiana przez przypadki, szczególnie satangów jest niedoskonała. Dane mogą być zarówno zwykłymi liczbami jak i liczbami sformatowanymi jako tekst.
W sumie jednak można z tego skorzystać i przynajmniej dla niezbyt dużych kwot po wprowadzeniu niezbędnych korekt użyć do zapisu złotych i groszy (albo innej podobnej waluty).
Aby uzyskać pełny zapis złotych i groszy zastosowałem taką funkcję LAMBDA:
Kod: | =LAMBDA(dane; LET(t; LITERY.MAŁE(TŁUMACZ(BAT.TEKST(dane))); t_1; PODSTAW(PODSTAW(PODSTAW(t; "bahty"; "złote"); "bahtów"; "złotych"); "baht"; "złoty");
w; ZAOKR(100*MOD(dane;1);0);
JEŻELI(w>0; LEWY(t_1; SZUKAJ.TEKST(" satang"; t_1)) & "grosz" &
WIERSZAMI(w; LAMBDA(wi; WARUNKI(wi=1; ""; LUB(wi={11;12;13;14}); "y";
LUB(MOD(wi;10)={2;3;4}); "e"; PRAWDA; "y"))); t_1)))(A3:A6)
| W przypadku zamiany form gramatycznych bahtów na złote można zastosować proste odpowiedniki, natomiast w przypadku satangów pominąłem odmianę proponowaną przez funkcję i wygenerowałem odpowiednie formy groszy na podstawie wartości liczbowych.
Formuła jest zapisana w formie dynamicznej tak, że można ją stosować zarówno do pojedynczych liczb, jak i do tablic liczbowych.
Tłumacz_słownie.xlsx
|
Pobierz Plik ściągnięto 13 raz(y) 10.35 KB |
|
|
 | ID posta:
439267
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|