Страницы: 1
RSS
Формула сумма прописью, Доработка большой формулы
 
Может у кого есть время/желание/необходимые знания добавить склонение рублей и копеек и увеличить до 999 999 999 999.99
Формула работает до 999 999 999.99 без склонения рублей и копеек (2986 символов)
Системный разделитель "."
Код
=ЕСЛИ(A2>999999999.99;"слишком большое число"; ЕСЛИ(ОКРВНИЗ.МАТ(A2;1)=0;"ноль";
ВЫБОР(ЛЕВБ(ТЕКСТ(A2;"000000000.00"))+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");2;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")
&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000.00");2;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");3;1)+1;;"один ";"два ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");
ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");3;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))
&ЕСЛИ((--ЛЕВБ(ТЕКСТ(A2;"000000000.00"))+ПСТР(ТЕКСТ(A2;"000000000.00");2;1)+ПСТР(ТЕКСТ(A2;"000000000.00");3;1))>0;"миллион"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000.00");3;1))=0;(--(ПСТР(ТЕКСТ(A2;"000000000.00");3;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000.00");2;1))=1));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000.00");3;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");4;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")
&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000.00");4;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000.00");5;1)=0;--ПСТР(ТЕКСТ(A2;"000000000.00");6;1)=0);"";""))
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");5;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")
&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000.00");5;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");6;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");6;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))
&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000.00");4;1)+ПСТР(ТЕКСТ(A2;"000000000.00");5;1)+ПСТР(ТЕКСТ(A2;"000000000.00");6;1))>0;"тысяч"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000.00");5;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000.00");6;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000.00");6;1))=0));" ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000.00");6;1))=1;"а ";"и "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");7;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")
&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000.00");7;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000.00");8;1)=0;--ПСТР(ТЕКСТ(A2;"000000000.00");9;1)=0);"";""))&
ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");8;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")
&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000.00");8;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");9;1)+1;;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000.00");9;1)+1;"десять";"одинадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать")))&" руб. "&ПРАВБ(ТЕКСТ(A2;"00.00");2)&" коп.")
Изменено: Тимофеев - 13.01.2022 19:37:53
 
Звучит как приказ
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Упростил формулу до триллиарда (4262 символа)
Осталось склонение рублей и копеек допилить + Первая заглавная
И у кого есть какие предложения в упрощении кол-ва символов формулы
Надо предложить Microsoft для России кол-во значимых символов для расчетов увеличить согласно курса рубля к доллару
Код
=ЕСЛИ(A2>999999999999.99;"столько БАБЛА не бывает"; ЕСЛИ(ОКРВНИЗ.МАТ(A2;1)=0;"ноль";
ВЫБОР(ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;;"один ";"два ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>0;"миллиард"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=0;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1))=1));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>0;"миллион"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>0;"тысяч"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));" ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;"а ";"и "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать")))
&" руб. "&ПРАВБ(ТЕКСТ(A2;"00.00");2)&" коп.")

Изменено: Тимофеев - 13.01.2022 19:38:04
 
Цитата
Тимофеев написал:
Осталось склонение рублей и копеек допилить
И у кого есть какие предложения в упрощении кол-ва символов формулы
http://www.excelworld.ru/forum/3-9902-1
Реализация на формулах

Особенности:
1. Без макросов. Пропись реализована формулой с использованием имен.
2. Не привязана к диапазонам, можно легко копировать/переносить, в т.ч. и в другие книги.
3. Работает до 999 млрд. руб.
4. Делает первую букву прописной, остальные строчные.
5. Правильно округляет до целых копеек, даже если копейки дробные.
6. Изменяет окончание в слове "копейка" в соответствии с правилами русского языка, а не просто "коп.".
7. Формула менее 1000 знаков, и спокойно редактируется в 2003 Excel.
 
Хотелось бы реализовать эту формулу (без имен) до конца, даже если она пугающая размером.
Может Let Переключ какие-то блоки заменить подсократит
Изменено: Тимофеев - 13.01.2022 10:06:01
 
А чем способ https://www.e-du.ru/2016/05/excel-summa-propisyu.html  не устраивает?
Или макрос...
Код
Function СУММАПРОПИСЬЮ(n As Double) As String
 
 Dim Nums1, Nums2, Nums3, Nums4 As Variant
 
 Nums1 = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", _
                   "семь ", "восемь ", "девять ")
 Nums2 = Array("", "десять ", "двадцать ", "тридцать ", "сорок ", _
 "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
 Nums3 = Array("", "сто ", "двести ", "триста ", "четыреста ","пятьсот ", _
 "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
 Nums4 = Array("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ")
 Nums5 = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", _
"четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", _
"восемнадцать ", "девятнадцать ")
 
 If n <= 0 Then
   СУММАПРОПИСЬЮ = "ноль"
   Exit Function
 End If
 'разделяем число на разряды, используя вспомогательную функцию Class
 ed = Class(n, 1)
 dec = Class(n, 2)
 sot = Class(n, 3)
 tys = Class(n, 4)
 dectys = Class(n, 5)
 sottys = Class(n, 6)
 mil = Class(n, 7)
 decmil = Class(n, 8)
 
 'проверяем миллионы
 Select Case decmil
   Case 1
     mil_txt = Nums5(mil) & "миллионов "
     GoTo www
   Case 2 To 9
     decmil_txt = Nums2(decmil)
 End Select
 Select Case mil
   Case 1
     mil_txt = Nums1(mil) & "миллион "
   Case 2, 3, 4
     mil_txt = Nums1(mil) & "миллиона "
   Case  5 To 20
     mil_txt = Nums1(mil) & "миллионов "
 End Select
 www:
 sottys_txt = Nums3(sottys)
 'проверяем тысячи
 Select Case dectys
   Case 1
     tys_txt = Nums5(tys) & "тысяч "
     GoTo eee
   Case 2 To 9
     dectys_txt = Nums2(dectys)
 End Select
 Select Case tys
   Case 0
     If dectys > 0 Then tys_txt = Nums4(tys) & "тысяч "
   Case 1
     tys_txt = Nums4(tys) & "тысяча "
   Case 2, 3, 4
     tys_txt = Nums4(tys) & "тысячи "
   Case 5 To 9
     tys_txt = Nums4(tys) & "тысяч "
 End Select
 If dectys = 0 And tys = 0 And sottys <> 0 Then sottys_txt = sottys_txt & " тысяч "
 eee:
 sot_txt = Nums3(sot)
 'проверяем десятки
 Select Case dec
   Case 1
     ed_txt = Nums5(ed)
     GoTo rrr
   Case 2 To 9
     dec_txt = Nums2(dec)
 End Select
 
 ed_txt = Nums1(ed)
 rrr:
 'формируем итоговую строку
 СУММАПРОПИСЬЮ = decmil_txt & mil_txt & sottys_txt & dectys_txt & tys_txt & sot_txt & dec_txt & ed_txt
End Function
 
'вспомогательная функция для выделения из числа разрядов
Private Function Class(M, I)
  Class = Int(Int(M - (10 ^ I) * Int(M / (10 ^ I))) / 10 ^ (I - 1))
End Function


Код
Public Function копей_ки(n)
Dim nn As Integer
nn = (Fix(n) / 10 - Fix(Fix(n) / 10)) * 10
If n > 9 And n < 21 Then nn = 0
Select Case nn
    Case 1
        копей_ки = "копейка"
    Case 2, 3, 4
        копей_ки = "копейки"
    Case Else
        копей_ки = "копеек"
End Select
End Function

Public Function руб_ль(n)
Dim nn As Integer
nn = (Fix(n) / 10 - Fix(Fix(n) / 10)) * 10
If n > 9 And n < 21 Then nn = 0
Select Case nn
    Case 1
        руб_ль = "рубль"
    Case 2, 3, 4
        руб_ль = "рубля"
    Case Else
        руб_ль = "рублей"
End Select
End Function
 
Цитата
Тимофеев написал:
Хотелось бы реализовать эту без имен до конца
Посмотрите как у меня сделано склонение рубль/рубля/рублей и копейка/копейки/копеек
и допилите свою аналогичным образом
 
Добавил склонения опять длинно (4966 символов)
Осталось Первая заглавная
Код
ЕСЛИ(A2>999999999999.99;"столько БАБЛА не бывает"; ЕСЛИ(ОКРВНИЗ.МАТ(A2;1)=0;"ноль";
ВЫБОР(ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;;"один ";"два ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>0;"миллиард"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=0;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1))=1));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>0;"миллион"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>0;"тысяч"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));" ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;"а ";"и "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать")))
&" рубл"&ПЕРЕКЛЮЧ(--ПРАВБ(ТЕКСТ(ОКРУГЛВНИЗ(A2;0);"00");2);1;"ь ";2;"я ";3;"я ";4;"я ";21;"ь ";22;"я ";23;"я ";24;"я ";31;"ь ";32;"я ";33;"я ";34;"я ";41;"ь ";42;"я ";43;"я ";44;"я ";51;"ь ";52;"я ";53;"я ";54;"я ";61;"ь ";62;"я ";63;"я ";64;"я ";71;"ь ";72;"я ";73;"я ";74;"я ";81;"ь ";82;"я ";83;"я ";84;"я ";91;"ь ";92;"я ";93;"я ";94;"я ";"ей ")
&ПРАВБ(ТЕКСТ(A2;"00.00");2)&" копе"&ПЕРЕКЛЮЧ(--ПРАВБ(ТЕКСТ(A2;"00.00");2);1;"йка";2;"йки";3;"йки";4;"йки";21;"йка";22;"йки";23;"йки";24;"йки";31;"йка";32;"йки";33;"йки";34;"йки";41;"йка";42;"йки";43;"йки";44;"йки";51;"йка";52;"йки";53;"йки";54;"йки";61;"йка";62;"йки";63;"йки";64;"йки";71;"йка";72;"йки";73;"йки";74;"йки";81;"йка";82;"йки";83;"йки";84;"йки";91;"йка";92;"йки";93;"йки";94;"йки";"ек"))
Изменено: Тимофеев - 13.01.2022 19:38:35
 
5119  - первая заглавная наLETу
Код
=LET(a;ЕСЛИ(A2>999999999999.99;"столько БАБЛА не бывает";ЕСЛИ(ОКРВНИЗ.МАТ(A2;1)=0;"ноль";
ВЫБОР(ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;;"один ";"два ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ЛЕВБ(ТЕКСТ(A2;"000000000000.00"))+ПСТР(ТЕКСТ(A2;"000000000000.00");2;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>0;"миллиард"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=0;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");2;1))=1));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");3;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");4;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");5;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>0;"миллион"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");5;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");6;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));"ов ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;" ";"а "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;;"одна ";"две ";"три ";"четыре ";"пять ";"шесть ";"семь ";"восемь ";"девять ");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1)+1;"десять ";"одиннадцать ";"двенадцать ";"тринадцать ";"четырнадцать ";"пятнадцать ";"шестнадцать ";"семнадцать ";"восемнадцать ";"девятнадцать "))&ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");7;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");8;1)+ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>0;"тысяч"&ЕСЛИ(ИЛИ(--(ПСТР(ТЕКСТ(A2;"000000000000.00");8;1))=1;(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))>4);(--(ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=0));" ";ЕСЛИ((--ПСТР(ТЕКСТ(A2;"000000000000.00");9;1))=1;"а ";"и "));"")
&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)+1;;"сто ";"двести ";"триста ";"четыреста ";"пятьсот ";"шестьсот ";"семьсот ";"восемьсот ";"девятьсот ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");10;1)=0;;ЕСЛИ(И(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)=0;--ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)=0);"";""))&ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)+1;;;"двадцать ";"тридцать ";"сорок ";"пятьдесят ";"шестьдесят ";"семьдесят ";"восемьдесят ";"девяносто ")&ЕСЛИ(--ПСТР(ТЕКСТ(A2;"000000000000.00");11;1)<>1;ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;;"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять");ВЫБОР(ПСТР(ТЕКСТ(A2;"000000000000.00");12;1)+1;"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать")))
&" рубл"&ПЕРЕКЛЮЧ(--ПРАВБ(ТЕКСТ(ОКРУГЛВНИЗ(A2;0);"00");2);1;"ь ";2;"я ";3;"я ";4;"я ";21;"ь ";22;"я ";23;"я ";24;"я ";31;"ь ";32;"я ";33;"я ";34;"я ";41;"ь ";42;"я ";43;"я ";44;"я ";51;"ь ";52;"я ";53;"я ";54;"я ";61;"ь ";62;"я ";63;"я ";64;"я ";71;"ь ";72;"я ";73;"я ";74;"я ";81;"ь ";82;"я ";83;"я ";84;"я ";91;"ь ";92;"я ";93;"я ";94;"я ";"ей ")
&ПРАВБ(ТЕКСТ(A2;"00.00");2)&" копе"&ПЕРЕКЛЮЧ(--ПРАВБ(ТЕКСТ(A2;"00.00");2);1;"йка";2;"йки";3;"йки";4;"йки";21;"йка";22;"йки";23;"йки";24;"йки";31;"йка";32;"йки";33;"йки";34;"йки";41;"йка";42;"йки";43;"йки";44;"йки";51;"йка";52;"йки";53;"йки";54;"йки";61;"йка";62;"йки";63;"йки";64;"йки";71;"йка";72;"йки";73;"йки";74;"йки";81;"йка";82;"йки";83;"йки";84;"йки";91;"йка";92;"йки";93;"йки";94;"йки";"ек"));ПРОПИСН(ЛЕВБ(a;1))&ПСТР(a;2;ДЛСТР(a)-1))
Изменено: Тимофеев - 01.09.2023 12:04:56
 
:)
Цитата
Тимофеев,  написал: 2986 символов
Упростил...(4262 символа)
 
Появление LET сразу говорит о наличии других встроенных типа TEXTJOIN а это означает что можно запихнуть туда повторяющиеся части и срастить результирующий текст.

Так же с помощью LET можно однократно использовать массив и заменив ВЫБОР на ИНДЕКС, убрать повторяющиеся части.

Цитата
tutochkin написал:
Или макрос...
в защиту формульного варианта могу отметить, что она будет работать при любых настройках кодовой страницы, хотя для работы с любыми региональными настройками нужно смотреть.
Изменено: БМВ - 13.01.2022 19:31:05
По вопросам из тем форума, личку не читаю.
 
4262  символа - совсем формулисты распоясались ))
Страницы: 1
Наверх