Формула "Число прописью" для Гугл таблиц
=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 - это комментарий).
Такая максимально подробная разбивка на части сложной задачи упрощает её решение и последующую проверку.
Если интересно, могу выложить ещё интереснейшие формулы)))
Круто конечно, но все же когда бизнес-логика таблицы требует таких монструозных решений, имеет, наверное, смысл перейти на на нормальный язык программирования.