Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 76503 Skopiuj do schowka 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 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

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