8

Формула "Число прописью" для Гугл таблиц

Серия Формулы Гугл таблиц

=LET(
_num; ABS(A6);
_rub; ЦЕЛОЕ(_num);
_kop; ОКРУГЛ((_num - _rub) * 100; 0);
_comm1; "Словари (индексы с 1)";
_units_m; {"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять"};
_units_f; {"";"одна";"две";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять"};
_tens; {"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто"};
_hundreds;{"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот"};
_teens; {"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать"};
_comm2; "Лямбда: число 0..999 → слова, gender: 0 – мужской, 1 – женский";
_numWords; LAMBDA(_n; _gender;
LET(
_h; ЦЕЛОЕ(_n / 100);
_rest; _n - _h * 100;
_d; ЦЕЛОЕ(_rest / 10);
_u; _rest - _d * 10;
_sH; ЕСЛИ(_h > 0; ИНДЕКС(_hundreds; _h + 1); "");
_sD; ЕСЛИ(И(_rest >= 10; _rest <= 19); ИНДЕКС(_teens; _rest - 9); ЕСЛИ(_d > 0; ИНДЕКС(_tens; _d + 1); ""));
_sU; ЕСЛИ(И(_rest >= 10; _rest <= 19); ""; ЕСЛИ(_u > 0; ИНДЕКС(ЕСЛИ(_gender = 1; _units_f; _units_m); _u + 1); ""));
СЖПРОБЕЛЫ(_sH & " " & _sD & " " & _sU)
)
);
_comm3; "Лямбда: склонение существительного по числу (forms – массив из 3 форм)";
_decline; LAMBDA(_n; _forms;
LET(
_rem; ОСТАТ(ABS(_n); 100);
_idx; ЕСЛИ(И(_rem >= 11; _rem <= 19); 3; ЕСЛИ(ОСТАТ(_rem; 10) = 1; 1; ЕСЛИ(И(ОСТАТ(_rem; 10) >= 2; ОСТАТ(_rem; 10) <= 4); 2; 3)));
ИНДЕКС(_forms; _idx)
)
);
_comm4; "Разбиваем рубли на группы по 3 цифры";
_r1; _rub;
_groupMln; ЦЕЛОЕ(_r1 / 1000000);
_r2; _r1 - _groupMln * 1000000;
_groupThs; ЦЕЛОЕ(_r2 / 1000);
_r3; _r2 - _groupThs * 1000;
_groupUnit; _r3;
_comm5; "Преобразуем каждую группу в слова";
_wordsMln; ЕСЛИ(_groupMln > 0; _numWords(_groupMln; 0) & " " & _decline(_groupMln; {"миллион";"миллиона";"миллионов"}); "");
_wordsThs; ЕСЛИ(_groupThs > 0; _numWords(_groupThs; 1) & " " & _decline(_groupThs; {"тысяча";"тысячи";"тысяч"}); "");
_wordsUnit; ЕСЛИ(_groupUnit > 0; _numWords(_groupUnit; 0) & " " & _decline(_groupUnit; {"рубль";"рубля";"рублей"}); "рублей");
_comm6; "Собираем рублёвую часть (если всё нули – «ноль рублей»)";
_rubPart; ЕСЛИ(
И(_groupMln = 0; _groupThs = 0; _groupUnit = 0);
"ноль " & _decline(0; {"рубль";"рубля";"рублей"});
СЖПРОБЕЛЫ(_wordsMln & " " & _wordsThs & " " & _wordsUnit)
);
_comm7; "Копейки";
_kopStr; ТЕКСТ(_kop; "00");
_kopWords; _kopStr & " " & _decline(_kop; {"копейка";"копейки";"копеек"});
_comm8; "Финальный результат с заглавной буквы";
_full; _rubPart & " " & _kopWords;
ПРОПИСН(ЛЕВСИМВ(_full; 1)) & ПСТР(_full; 2; ДЛСТР(_full) - 1)
)

Вместо A6 во второй строке вставьте адрес с числом.

Написано максимально подробно, с комментариями ( начало с _comm - это комментарий).

Такая максимально подробная разбивка на части сложной задачи упрощает её решение и последующую проверку.

Если интересно, могу выложить ещё интереснейшие формулы)))

2
DELETED
Автор поста оценил этот комментарий

Круто конечно, но все же когда бизнес-логика таблицы требует таких монструозных решений, имеет, наверное, смысл перейти на на нормальный язык программирования.

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества