Как в экселе число преобразовать в текст прописью
Ниже вы найдете готовую пользовательскую функцию на VBA, которая переводит любое число от 0 до 9 999 999 в его текстовое представление, т.е. в сумму прописью. Перед использованием, эту функцию необходимо добавить в вашу книгу. Для этого:
- нажмите сочетание клавиш ALT+F11, чтобы открыть редактор Visual Basic
- добавьте новый пустой модуль через меню Insert - Module
- скопируйте и вставьте туда текст этой функции:
Сохраните файл (если у вас Excel 2007 или 2010, то тип файла должен быть с поддержкой макросов, т.е. в формате xlsm!) и вернитесь в Excel. Теперь вы можете вставить созданную функцию в любую ячейку листа этой книги обычным способом - через мастер функций (кнопка fx в строке формул, категория Определенные пользователем) или просто набрав ее в ячейке вручную и указав в качестве аргумента ячейку с суммой:
Если вам необходимо добавить к полученному тексту копейки, то можно воспользоваться чуть более сложной конструкцией:
Тогда, например, для числа 35,15 результат функции будет выглядеть как "тридцать пять руб. 15 коп."
Ссылки по теме
Добрый день!Мне эта функция очень понравилось, очень пригодилась для заполнения препроводительных сумок с денежной наличностью.
Я вижу что есть " Более мощный вариант функции с рублями и копейками на русском/английском из надстройки PLEX ", он слишком "крутой" для нас.
Можно ли текущий вариант добавить функционал, чтобы первое слово было с Заглавной буквы, например:
34 руб = "Тридацать четыре рубля"
1 456 789 = "Один миллион четыреста пятьдесят шесть рублей семьсот восемьдесят девять рублей"
Буду очень признателен за помощь, т.к. банк требует первое слово с заглавной буквы. Да, конечно. Чтобы любой текст сделать с заглавной буквы, можно применить вот такую формулу:
где А1 - ячейка с вашим текстом или функция вывода суммы прописью. Здравствуйте! Не очень понял, куда вставить указанную строчку. У меня стоит такой же макрос, как в примере. Где там добавить эту строчку, чтобы первая цифра была заглавной?
Заранее благодарю! Сергей, это не в макрос надо вставить, а на листе в ячейку. Формула будет брать сделанную макросом сумму прописью (из А1) и выводить ее с заглавной буквы.
Смотрите, у меня вывод суммы прописью идет в определенную ячейку.
Мои действия:
1. Сначала в листе появляется результат макроса с маленькой буквы;
2. Надо написать в другой ячейке эту формулу;
3. Скопировать данные из ячейки с формулой на место где сначала был результат макроса.
Более простого пути нет, чтобы сразу на первом шаге в нужной ячейке появлялась сумма с Заглавной буквы?
Николай, куда вставить строчку
=ПРОПИСН(ЛЕВСИМВ(А1))&ПСТР(А1;2;ДЛСТР(А1)-1)
,для того, чтобы сумма писалась с заглавной буквы.
Вы говорите, что в ячейку. Но в этой ячейке и так уже есть формула
=СУММАПРОПИСЬЮ(P31)&" руб. "&ТЕКСТ((P31-ЦЕЛОЕ(P31))*100;"00";)&" коп."
Ничего не понятно!
=ЕСЛИ(ОКРУГЛ(B6-ЦЕЛОЕ(B6);2)=1;СЦЕПИТЬ(СУММАПРОПИСЬЮ(B6+1);" руб. 00 коп.");
СУММАПРОПИСЬЮ(B6)&" руб. "&ТЕКСТ((B6-ЦЕЛОЕ(B6))*100;"00")&" коп.").
Александр Т , я не об этом хотел сказать
Функция Николая Павлова не совсем корректна:
1. Не целые значения от 0 до 1 не кореектно обрабатываются, слово "ноль" будет писаться только для n <= 0
да и то не будет писатся вообще, т.к. функция называется СУММАПРОПИСЬЮ а в 15 строке "ноль" присваивается переменной PropisRus
2. Если функция не обрабатывает копейки, то зачем n As Double?
при этом не происходит округления, так 0,995 нужно округлять до целого в большую сторону.
В самой функции можно использовать
n = Int(CDbl(Format(n, "0.00")))
или
n = Int(WorksheetFunction.Round(n, 2))
В данном случае лучше использовать Format (или функцию листа WorksheetFunction.Round), а не функцию Round из VBA, т.к. Round округляет не по математическим законам округления
3. В слове "тысячa" буква "a" - латинская
с VBA не знаком, поэтому работал с тем, что было.
За разъяснения - спасибо: стало намного понятнее!
это Вам - спасибо!
столько нового и полезного узнал!
p.s.: ждем уроков по макросам!
Еще можно использовать функцию PROPIS из надстройки PLEX - там рабочий диапазон больше.Хотелось бы узнать, как сделать так, чтобы данная функция была доступна для всех книг EXCEL, а не только для той, в которой заводился макрос? Ольга, если нужно, чтобы на отдельно взятом компьютере эта функция была доступна, то нужно поместить ее в Личную книгу макросов . Если нужно, чтобы функция работала на любом компьютере, то обязательно вставлять ее в книгу.
Воспользовалась функцией для разработки формы по просьбе бухгалтера. Бухгалтер - счастлив.
Заранее спасибо!
Не полностью пишет целые суммы:
с неровными суммами всё в порядке, а вот с ровными не очень. Сумма больше 9999999.
33 333 333,00 | Тридцать три миллиона триста тридцать три тысячи триста тридцать три |
30 000 000,00 | Тридцать |
=ЕСЛИ(A1<0;"Минус "&СуммаПрописью(A1);СуммаПрописью(A1))
Какие настройки нужно изменить, чтобы макрос работал, когда рубли от копеек отделяются "-" (как в платежке)
То есть как пример в ячейке сумма цифрами нужно прописать 260-01 (Если просто заменить ',' на '-' - макрос не работает
Подскажите, как сделать, что бы результат отображался в скобках?
250 (двести пятьдесят) Мари, нужно подклеить к вашему числу скобки и сумму прописью.
Если ваше число лежит в ячейке A1, то формула будет
А можно ли вместо английского или русского писать в VBA на армянском эти цифры? У меня вопросительные знаки вместо букв приводит.
Заранее спасибо!
Добрый день
Поскажите пожалуйста
почему у меня проблемы с шрифтами в модуле
например СУММАПРОПИСЬЮ ÑÓÌÌÀÏÐÎÏÈÑÜÞ
Подскажите, что нужно сделать, чтобы в "русском" экселе результат данной формулы выводился на английском языке?
Я в свое время формулу написал, пользуюсь ей:
У меня была проблема, пользователей было много, не у всех были разрешены макросы, поэтому надо было думать формулами - во и вышло.
Теперь макросы использую только тогда, когда формулами нереально добиться результата.
Хотелось бы чуть-чуть усовершенствовать, чтобы до 10 коп. показывало 00, 01, 02 и т.д. Возможно?
Спасибо! Получилось!
Заменила концовку формулы ОСТАТ(Ссылка*100;100) & " коп." --> ТЕКСТ((Ссылка-ЦЕЛОЕ(Ссылка)*100;"00") &" коп."
Пробовала макрос сделать, но, как и у некоторых, отображает кучу вопросительных знаков, кириллицу не воспринимает.
В любом случае, рада, что наткнулась на этот познавательный сайт
Отличная формула, но в части копеек работает не очень корректно. Например,
528,17 = пятьсот двадцать восемь руб. 16,9999999999927 коп.,
648,08 = шестьсот сорок восемь руб. 8,00000000000728 коп.,
2589,99 = две тысячи пятьсот восемьдесят девять руб. 98,9999999999709 коп.
И конечно хотелось бы видеть нули в таких суммах, как
628,02 = шестьсот сорок восемь руб. 2 коп.,
800,00 = восемьсот руб. 0 коп.
Слегка исправила окончание формулы, вдруг, кому-то пригодиться через два года после публикации
Заменить часть формулы после "руб.".
А такую формулу подправлять желающих найдется немного
спасибо создателю формулы.
просто подправил под себя. не стал сокращать, хотя учитывая особенности формирования числительных в английском, точно можно сократить. может кто возьмется. а пока так.
=ЕСЛИ(ССЫЛКА=0;"ZERO";СЖПРОБЕЛЫ(ВЫБОР((ОСТАТ(ССЫЛКА;1000000000)-ОСТАТ(ССЫЛКА;100000000))/100000000+1;"";"ONE HUNDRED";"TWO HUNDRED";"THREE HUNDRED";"FOUR HUNDRED";"FIVE HUNDRED";"SIX HUNDRED";"SEVEN HUNDRED";"EIGHT HUNDRED";"NINE HUNDRED") & " " & ВЫБОР(ЕСЛИ(ОСТАТ(ССЫЛКА;100000000)<20000000;1;(ОСТАТ(ССЫЛКА;100000000)-ОСТАТ(ССЫЛКА;10000000))/10000000);"";"TWENTY";"THIRTY";"FORTY";"FIFTY";"SIXTY";"SEVENTY";"EIGHTY";"NINETY") & " " & ВЫБОР((ЕСЛИ(ОСТАТ(ССЫЛКА;100000000)<19999999;ОСТАТ(ССЫЛКА;100000000);ОСТАТ(ССЫЛКА;10000000))-ОСТАТ(ССЫЛКА;1000000))/1000000+1;"";"ONE";"TWO";"THREE";"FOUR";"FIVE";"SIX";"SEVEN";"EIGHT";"NINE";"TEN";"ELEVEN";"TWELVE";"THIRTEEN";"FOURTEEN";"FIFTEEN";"SIXTEEN";"SEVENTEEN";"EIGHTEEN";"NINETEEN") & " " & ЕСЛИ(ССЫЛКА<1000000;"";ЕСЛИ((ЕСЛИ(ОСТАТ(ССЫЛКА;100000000)<20000000;ОСТАТ(ССЫЛКА;100000000);ОСТАТ(ССЫЛКА;10000000))-ОСТАТ(ССЫЛКА;1000000))/1000000=1;"MILLION";ЕСЛИ(И((ЕСЛИ(ОСТАТ(ССЫЛКА;100000000)<20000000;ОСТАТ(ССЫЛКА;100000000);ОСТАТ(ССЫЛКА;10000000))-ОСТАТ(ССЫЛКА;1000000))/1000000>1;(ЕСЛИ(ОСТАТ(ССЫЛКА;100000000)<20000000;ОСТАТ(ССЫЛКА;100000000);ОСТАТ(ССЫЛКА;10000000))-ОСТАТ(ССЫЛКА;1000000))/1000000<5);"MILLION";"MILLION"))) & " " & ВЫБОР((ОСТАТ(ССЫЛКА;1000000)-ОСТАТ(ССЫЛКА;100000))/100000+1;"";"ONE HUNDRED";"TWO HUNDRED";"THREE HUNDRED";"FOUR HUNDRED";"FIVE HUNDRED";"SIX HUNDRED";"SEVEN HUNDRED";"EIGHT HUNDRED";"NINE HUNDRED") & " " & ВЫБОР(ЕСЛИ(ОСТАТ(ССЫЛКА;100000)<20000;1;(ОСТАТ(ССЫЛКА;100000)-ОСТАТ(ССЫЛКА;10000))/10000);"";"TWENTY";"THIRTY";"FORTY";"FIFTY";"SIXTY";"SEVENTY";"EIGHTY";"NINETY") & " " & ВЫБОР((ЕСЛИ(ОСТАТ(ССЫЛКА;100000)<19999;ОСТАТ(ССЫЛКА;100000);ОСТАТ(ССЫЛКА;10000))-ОСТАТ(ССЫЛКА;1000))/1000+1;"";"ONE";"TWO";"THREE";"FOUR";"FIVE";"SIX";"SEVEN";"EIGHT";"NINE";"TEN";"ELEVEN";"TWELVE";"THIRTEEN";"FOURTEEN";"FIFTEEN";"SIXTEEN";"SEVENTEEN";"EIGHTEEN";"NINETEEN") & " " & ЕСЛИ(ССЫЛКА<1000;"";ЕСЛИ((ЕСЛИ(ОСТАТ(ССЫЛКА;100000)<20000;ОСТАТ(ССЫЛКА;100000);ОСТАТ(ССЫЛКА;10000))-ОСТАТ(ССЫЛКА;1000))/1000=1;"THOUSAND";ЕСЛИ(И((ЕСЛИ(ОСТАТ(ССЫЛКА;100000)<20000;ОСТАТ(ССЫЛКА;100000);ОСТАТ(ССЫЛКА;10000))-ОСТАТ(ССЫЛКА;1000))/1000>1;(ЕСЛИ(ОСТАТ(ССЫЛКА;100000)<20000;ОСТАТ(ССЫЛКА;100000);ОСТАТ(ССЫЛКА;10000))-ОСТАТ(ССЫЛКА;1000))/1000<5);"THOUSAND";"THOUSAND"))) & " " & ВЫБОР((ОСТАТ(ССЫЛКА;1000)-ОСТАТ(ССЫЛКА;100))/100+1;"";"ONE HUNDRED";"TWO HUNDRED";"THREE HUNDRED";"FOUR HUNDRED";"FIVE HUNDRED";"SIX HUNDRED";"SEVEN HUNDRED";"EIGHT HUNDRED";"NINE HUNDRED") & " " & ВЫБОР(ЕСЛИ(ОСТАТ(ССЫЛКА;100)<20;1;(ОСТАТ(ССЫЛКА;100)-ОСТАТ(ССЫЛКА;10))/10);"";"TWENTY";"THIRTY";"FORTY";"FIFTY";"SIXTY";"SEVENTY";"EIGHTY";"NINETY") & " " & ВЫБОР(ЕСЛИ(ОСТАТ(ССЫЛКА;100)<20;ОСТАТ(ССЫЛКА;100);ОСТАТ(ССЫЛКА;10))+1;"";"ONE";"TWO";"THREE";"FOUR";"FIVE";"SIX";"SEVEN";"EIGHT";"NINE";"TEN";"ELEVEN";"TWELVE";"THIRTEEN";"FOURTEEN";"FIFTEEN";"SIXTEEN";"SEVENTEEN";"EIGHTEEN";"NINETEEN"))) & " METRIC TONS & " & ОСТАТ(ССЫЛКА*1000;1000) & " KILOGRAMS"
Написать число или сумму прописью кажется довольно тривиальной задачей. Но если это нужно делать десятки раз на дню и с множеством документов, нужна автоматизация. Идеальным решением была бы формула в Excel.
Можно ли сделать такую формулу? Можно! А главное, что вам делать ничего не придется (только скопировать), потому что я уже сделал её за вас! Но обо всем по порядку.
Сопоставление чисел и их эквивалентов прописью
Если попытаться описать алгоритм, который будет учитывать все нюансы, окажется, что все на так просто, как кажется:
- в зависимости от того, на какую цифру заканчивается число, его падеж и число могут быть:
- единственное, именительный (двадцать один рубль)
- единственное, родительный (двадцать два/три/четыре рубля)
- множественное, родительный (двадцать, двадцать пять/шесть/семь/восемь/девять рублей)
И это далеко не все нюансы. Есть ли варианты, которые их все учитывают?
Число прописью в Excel — формула
Большинство руководств в интернете предлагают решения на VBA и надстройки. Также предлагаются формулы на основе именованных диапазонов.
Но зачастую необходимо обмениваться файлами между разными компьютерами, и в таких случаях формулы попросту «полетят», и данные будут повреждены, т.к. вместе с файлом нужно будет портировать и код надстроек, что никто делать обычно не будет.
В случае с именованными диапазонами — нужно будет создавать их заново (а их около десятка!).
Число прописью в Excel — примеры сопоставленияВозможна ли формула без применения VBA, макросов и надстроек?
Черт возьми, да! Я долго размышлял, прежде чем ее сделать, но мне это удалось.
Вот эта формула! Вставьте ее в любую ячейку, кроме A1, т.к. она преобразует значение этой самой ячейки:
Тройной клик по формуле выделит ее целиком.
Формула работает с любыми целыми числами от 1 до миллиарда, не включая его. Если дано число с десятичными знаками после запятой, формула берет только целую часть, иными словами, округляет всегда вниз.
Если вы хотите округлять такие числа обычным округлением по математическим правилам, замените процедурой найти и заменить во всей формуле
Сумма прописью с копейками в Excel
Для записи суммы прописью с копейками по всем канонам, нужно соблюсти ряд условий:
- Рубли пишутся словами, первая буква обычно заглавная
- Словоформа слова «рубль» должна соответствовать количеству
- Копейки пишутся цифрами, но падеж и число слова «копейка» тоже должны соответствовать числу
Сумма прописью с копейками в Excel — пример таблицы соответствия суммы и текстаТрудно в это поверить, но и такая формула тоже существует. Аналогично, без применения VBA, макросов и надстроек.
Формула огромна, но замечательно справляется с любыми суммами до миллиарда. Работать будет в любой версии Excel от 2007 и старше — в 2003 не была доступна такая глубина вложений функций.
Вот и она, просто скопируйте ее, и она преобразует числовое значение ячейки A1 в сумму прописью с копейками.
В русских рублях, все буквы строчные
Формула выводит сумму в рублях, копейки оставляет цифрами. Если регистр первой буквы не важен, можно использовать её.
В русских рублях, первая буква заглавная
Стоит захотеть сделать первую букву заглавной — и формула становится в два раза длиннее, т.к. в Excel нет простой функции, которая бы позволила сделать только первую букву ячейки заглавной — нужны функции ЛЕВСИМВ и ПСТР, обращающиеся каждая к одной и той же огромной формуле.
Тройной клик по формуле выделит ее целиком.
В русских рублях с копейками прописью
Если нужно, чтобы копейки тоже были написаны прописью, то формула будет еще чуть длиннее, такой:
В белорусских рублях
Тройной клик по формуле выделит ее целиком.
Если вам не нужно делать первую букву заглавной, просто «оберните» всю эту гигантскую формулу функцией СТРОЧН.
Сумма прописью в Excel — UDF-функции
Для тех, кто не готов пользоваться огромными формулами, есть простое решение — установить надстройку, в которой присутствует код, скрывающий все эти вычисления «под капот». Одна из таких — разработанная мной надстройка !SEMTools.
В ней для решения задачи преобразования числа и суммы в их прописной вариант есть 2 лаконичные функции:
Они доступны абсолютно бесплатно безо всяких ограничений в любой версии надстройки, приобретать полную версию не обязательно.
Единственное ограничение — эти формулы будут работать только на тех компьютерах, где установлена надстройка.
Сумма и число прописью в Гугл таблицах
Прелесть формул выше в том, что они с минимальными модификациями портируются в Google Spreadsheets, где их замечательно можно использовать.
Ниже пример таблицы с указанными формулами:
Посмотреть сам файл и скопировать к себе можно по ссылке:
Сумма прописью — формула для Openoffice Calc
У формулы выше были проблемы с импортом в Openoffice, т.к. тот в отличие от Excel (2007 и старше), поддерживает максимум 42 уровня вложенности в формулах, а не 64.
Поэтому пришлось полностью переделать логику формулы и сделать ее сложной формулой массивов.
Так она выглядит в Excel:
А так — после импорта в Openoffice Calc:
Макрос
Для тех, кто ценит время и не готов прибегать к функциям, в надстройке для Excel !SEMTools доступны макросы преобразования в 1 клик.
Вызов процедуры находится в меню «Изменить символы» в группе «ИЗМЕНИТЬ» на панели надстройки. Макрос преобразует числа на месте, превращая их в текст. Можно выделить как одну, так и несколько ячеек:
Функционал доступен в полной версии надстройки.
Перевод чисел прописью в другие падежи
Зачастую после получения числа или суммы прописью нужно указать его в другом падеже.
Например, «сумма в размере пятисот тысяч трехсот трех рублей». Надстройка !SEMTools справляется и с этой задачей — смотрите раздел склонение по падежам в Excel.
У этой записи 61 комментариев
Нужно доработать функцию для другой валюты? Нашли недочеты или есть предложения? Оставляйте в комментариях!
Отличное решение! Совершенно неожиданное.
Вы избавились от кучи именованных диапазонов.
А с числом 16 Вы специально сделали провокацию?
Большое спасибо за что-то свежее.Не специально, но идея неплохая :)
Спасибо, поправил.А можно в этой формуле сделать, так чтобы сумма начиналась с маленькой буквы и вместо 00 копеек было просто ноль копеек?
Можно!
Формула даже станет существенно короче, т.к. изначально формула предполагается с маленькой буквы, и весь синтаксис до копеек повторяется только ради одной заглавной буквы вначале.Добавил вариант с копейками прописью в статью. Чтобы сделать все с маленькой буквы, можно обернуть ее функцией СТРОЧН.
большое спасибо, очень помогло. для долларов США и евро было бы отлично!)
Хочу начать эту статью короткой историей из своего опыта. Было время, когда приходилось трудиться куратором договоров и при составлении этих самых договоров набирать на клавиатуре сумму договора прописью.
И поскольку реестр договоров велся в Excel, то возник соблазн воспользоваться какой-нибудь формулой, которая бы перевела мне число, набранное цифрами, в число написанное прописью, причем по-русски. Перебрав все стандартные формулы в Excel, и найдя в категории «текстовые» функцию БАТТЕКСТ с описанием «преобразует число в текст», признаюсь, обрадовался. Разочарование наступило очень быстро, когда число, преобразованное в текст прописью оказалось на непонятном мне языке.
Как преобразовать число в текст прописью?
После этого была создана надстройка, в которой были объединены все наиболее востребованные инструменты для преобразования чисел в текст прописью на русском языке. Кроме людей, работающих с договорами, эта надстройка может стать незаменимым инструментом в повседневной работе бухгалтеров, менеджеров, экономистов, финансистов и вообще всех пользователей, кто использует в своей деятельности Microsoft Office Excel для работы с договорами, платежками, приходниками, расходниками, счетами-фактурами и прочими документами, формируемыми в Excel.
Надстройка, предназначенная для расширения возможностей Excel, позволяет использовать для преобразования чисел в текст функций, определенных пользователем, аналогично тому, как используются стандартные функции в Excel. Кроме этого запуск надстройки вызывает диалоговое окно, в котором можно выбирать по своему усмотрению различные параметры, такие как область действия, выбор валюты для формирования суммы прописью, выбор строчной либо заглавной буквы, с которой будет начинаться сумма прописью и выбор координат для места вставки суммы прописью относительно числа, написанного цифрами.
1. Одним кликом мыши вызвать диалоговое окно макроса прямо с панели инструментов Excel;
2. преобразовать любое число от 0 до 999 999 999 999 в прописной текст ;
3. преобразовать все числа в выбранном Вами диапазоне;
4. использовать при написании чисел прописью одну из валют на выбор: рубли, доллары, евро, тенге, гривны;
5. выбрать строчную либо заглавную букву в каждом первом слове суммы прописью;
6. выбрать любую позицию для вставки суммы прописью, относительно суммы цифрами;
7. использовать функции, определенные пользователем, аналогично стандартным формулам, которые позволят трансформировать число и сумму в текст прописью с использованием любой из представленных валют.
Как преобразовать текст, написанный прописью в число цифрами?
Возможна и обратная процедура, позволяющая трансформировать количественные числительные, суммы, написанные прописью в числа, написанные цифрами. Для этого создана надстройка, аналогичная той, которая описана выше.
1. Одним кликом мыши вызвать диалоговое окно макроса прямо с панели инструментов Excel;
2. преобразовать любую сумму, написанную прописью в число от 0 до 999 999 999, 99;
3. найти и преобразовать все суммы прописью в выбранном Вами диапазоне;
4. находить и преобразовывать суммы, написанные прописью с использованием любых валют: рублей, гривен, долларов, евро и др.;
5. выбрать любую позицию для вставки числа относительно ячейки с суммой прописью;
6. использовать пользовательскую функцию, аналогично стандартной формуле, которая позволит трансформировать сумму прописью в число.
*Для этой надстройки действуют следующие ограничения:
1) Предельная сумма прописью, которая может быть преобразована в число - Девятьсот девяносто девять миллионов девятьсот девяносто девять тысяч девятьсот девяносто девять рублей 99 копеек;
2) В сумме прописью обязательно должна присутствовать какая-либо валюта: рубли, гривны, доллары, евро, йены, юани и так далее.
Excel. Сумма прописью без макросов и надстроек
Дано: Excel c числами и суммами в рублях в ячейках.
Задача: написать данные числа прописью без использования макросов и каких-либо надстроек программы Excel, т.е. написать число прописью при помощи стандартных формул.Пример файла excel с таким решением можно скачать здесь.
См. также Сумма прописью онлайн (если просто нужно получить результат).
Что означает прописью?
Данный файл производит следующие манипуляции с числами:1. Формула 1 преобразовывает число в сумму прописью следующего формата:
"0 (пропись) рублей 00 копеек"
2. Формула 2 преобразовывает число в сумму прописью следующего формата:
"Пропись рублей 00 копеек"
3. Формула 3 просто переводит число в текст: число = пропись
Вот формулы, которые пишут сумму прописью:
1) Формула 1:2) Формула 2
= ПОДСТАВИТЬ ( ПРОПНАЧ ( ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 1 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 2 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 3 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 1 ; 3 ); "миллиард" & ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 3 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 2 ; 1 )- 1 ); мил ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 4 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 5 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 6 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 4 ; 3 ); "миллион" & ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 6 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 5 ; 1 )- 1 ); мил ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 7 ; 1 )+ 1 )& ИНДЕКС (n1x; ПСТР ( ТЕКСТ ( A1 ;n0); 8 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 9 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 7 ; 3 ); ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 9 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 8 ; 1 )- 1 ); тыс ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 10 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 11 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 12 ; 1 )+ 1 )); "z" ; " " )& ЕСЛИ ( ОТБР ( ТЕКСТ ( A1 ;n0)); "" ; "Ноль " )& "рубл" & ВПР ( ОСТАТ ( МАКС ( ОСТАТ ( ПСТР ( ТЕКСТ ( A1 ;n0); 11 ; 2 )- 11 ; 100 ); 9 ); 10 );< 0 ; "ь " : 1 ; "я " : 4 ; "ей " >; 2 )& ПРАВСИМВ ( ТЕКСТ ( A1 ;n0); 2 )& " копе" & ВПР ( ОСТАТ ( МАКС ( ОСТАТ ( ПРАВСИМВ ( ТЕКСТ ( A1 ;n0); 2 )- 11 ; 100 ); 9 ); 10 );< 0 ; "йка" : 1 ; "йки" : 4 ; "ек" >; 2 )3) Формула 3
= ПОДСТАВИТЬ ( ПРОПНАЧ ( ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 1 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 2 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 3 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 1 ; 3 ); "миллиард" & ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 3 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 2 ; 1 )- 1 ); мил ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 4 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 5 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 6 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 4 ; 3 ); "миллион" & ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 6 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 5 ; 1 )- 1 ); мил ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 7 ; 1 )+ 1 )& ИНДЕКС (n1x; ПСТР ( ТЕКСТ ( A1 ;n0); 8 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 9 ; 1 )+ 1 )& ЕСЛИ (- ПСТР ( ТЕКСТ ( A1 ;n0); 7 ; 3 ); ВПР ( ПСТР ( ТЕКСТ ( A1 ;n0); 9 ; 1 )* И ( ПСТР ( ТЕКСТ ( A1 ;n0); 8 ; 1 )- 1 ); тыс ; 2 ); "" )& ИНДЕКС (n_4; ПСТР ( ТЕКСТ ( A1 ;n0); 10 ; 1 )+ 1 )& ИНДЕКС (n0x; ПСТР ( ТЕКСТ ( A1 ;n0); 11 ; 1 )+ 1 ; ПСТР ( ТЕКСТ ( A1 ;n0); 12 ; 1 )+ 1 )); "z" ; " " )& ЕСЛИ ( ОТБР ( ТЕКСТ ( A1 ;n0)); "" ; "Ноль " )При необходимости формулу можно подогнать под нужный формат.
Как использовать данную формулу?
Вы можете взять файл примера и внести в него свои данные, чтобы получить результат.
Если же у Вас уже есть готовый файл с заполненными данными и Вам необходимо добавить возможность написания суммы прописью, то чтобы формула заработала, необходимо сделать некоторые подготовительные действия, а именно добавить справочники, которые использует формула. В данном примере справочники заданы как именованные диапазоны (это решение хорошо тем, что пользователь эти диапазоны не видит на листах и соответственно не сможет лишний раз что-то испортить).Итак, нам необходимо сделать следующие справочники:
Имя диапазона: n_1
Диапазон: =Имя диапазона: n_2
Диапазон: =Имя диапазона: n_3
Диапазон: =Имя диапазона: n_4
Диапазон: =Имя диапазона: n_5
Диапазон: =Имя диапазона: n0
Диапазон: ="000000000000"&ПСТР(1/2;2;1)&"00"Имя диапазона: n0x
Диапазон: =ЕСЛИ(n_3=1;n_2;n_3&n_1)Имя диапазона: n1x
Диапазон: =ЕСЛИ(n_3=1;n_2;n_3&n_5)Имя диапазона: мил
Диапазон: =Имя диапазона: тыс
Диапазон: =Чтобы создать справочник таких диапазонов, переходим на вкладку "Формулы" - "Диспетчер имен":
В открывшемся окне нажимаем кнопку "Создать" и в форме вводим данные первого диапазона из таблицы:
Читайте также: