Число прописью в MS EXCEL (статичный вариант)

Превратим число 256 в строку "двести пятьдесят шесть". Число прописью запишем без использования VBA.

Набирать текст "двести пятьдесят шесть" безумно скучно, кроме того легко ошибиться, поэтому давно написаны макросы на VBA, которые легко справляются с этой задачей.

Чтобы перевести число в текст, макросы писать не обязательно, можно эту задачу решить с помощью обычных формул.

Для решения задачи нам потребуются 4 текстовых Именованных диапазона содержащих некоторые числа прописью:

  • Диапазон Единицы, содержащий числа прописью от 1 до 20: один, два, три, … двадцать;
  • Диапазон Десятки, содержащий числа 10, 20, …, 90 прописью: десять, двадцать, тридцать, … девяносто;
  • Диапазон Сотни, содержащий числа 100, 200, …, 900 прописью: сто, двести, триста, … девятьсот.
  • Диапазон ЕдиницыТ, содержащий числапрописью от 1 до 20 со специальным склонением для тысяч (чтобы правильно написать две тысячи, а не два тысячи)

Диапазоны разместим на листе Служ. Также на листе Служ разместим вспомогательные формулы (см. файл примера). Исходное число (от 0 до 1 млрд.) и его запись прописью разместим на листе Прописью.

В качестве исходного числа возьмем 123 456 789. Алгоритм решения задачи следующий.

  • Разобьем исходное число на 3 части, выделив миллионы (123), тысячи (456) и единицы с десятками и сотнями (789), подробнее смотри статью Извлекаем из числа единицы, десятки, сотни, тысячи и миллионы;
  • Запишем выделенные числа прописью с помощью однотипных формул;
  • Полученные текстовые значения соберем вместе, добавляя слова тысяч и миллионов в правильном склонении (пять миллионов, но два миллиона).

Единицы, десятки и сотни
Из исходного числа (ссылка на него находится в ячейке Н1 листа Служ) с помощью формулы =ОСТАТ(H1;1000) выделим число единиц (т.е. из исходного 123 456 789 получим 789), разместим его в ячейку G4 и запишем его прописью с помощью формулы:
=ИНДЕКС(Сотни;ОТБР(G4/100)+1)&" "&
ЕСЛИ(G4-ОТБР(G4/100)*100<21;
ИНДЕКС(Единицы;G4-ОТБР(G4/100)*100+1);
ИНДЕКС(Десятки;ОТБР((G4-ОТБР(G4/100)*100)/10))&""&
ИНДЕКС(Единицы;ОСТАТ(G4;10)+1))

Формула состоит из 3-х частей (для единиц, десятков и сотен). Например, часть формулы ИНДЕКС(Сотни;ОТБР(G4/100)+1) возвращает прописью число сотен (семь): ОТБР(G4/100) из 789 получает 7, функция ИНДЕКС() из диапазона Сотни выбирает текстовое значение соответствующее числу 7, т.е. «семь».
Часть формулы ИНДЕКС(Единицы;ОСТАТ(G4;10)+1)) возвращает прописью число единиц (девять).
Часть формулы ЕСЛИ(G4-ОТБР(G4/100)*100<21;ИНДЕКС(Единицы;G4-ОТБР(G4/100)*100+1);ИНДЕКС(Десятки;ОТБР((G4-ОТБР(G4/100)*100)/10)) возвращает прописью число десятков (восемь).
Результат вычисления формулы (семьсот восемьдесят девять) запишем в ячейку Н4.

Тысячи
Затем, из исходного числа с помощью формулы =ОСТАТ(ОТБР(H1/1000);1000) выделим число тысяч (т.е. из исходного 123 456 789 получим 456). Результат вычисления формулы (четыреста пятьдесят шесть) запишем в ячейку Н3.

Миллионы
Наконец, из исходного числа с помощью формулы =ОКРУГЛВНИЗ(H1;-6)/1000000 выделим число миллионов (т.е. из исходного 123 456 789 получим 123). Результат вычисления формулы (сто двадцать три) запишем в ячейку Н2.

Полученные значения тысяч и миллионов запишем прописью с помощью формул аналогичных формуле для единиц.

Теперь разберемся со склонениями слов тысяча (одна тысяча, две тысячи, пять тысяч) и миллион (один миллион, два миллиона, пять миллионов). Для тысяч это можно сделать с помощью формулы:
=ЕСЛИ(G3>0;
ЕСЛИ(И(G3-ОТБР(G3/100)*100>10;G3-ОТБР(G3/100)*100<15);"тысяч";
ЕСЛИ(--ПРАВСИМВ(G3;1)=0;"тысяч";
ЕСЛИ(--ПРАВСИМВ(G3;1)=1;"тысяча";
ЕСЛИ(--ПРАВСИМВ(G3;1)<5;"тысячи";"тысяч"))));"")

Результат вычисления формул запишем в ячейки I2 (для миллионов) и I3 (для тысяч).

Финальную сборку числа прописью произведем на листе Прописью с помощью формулы:
=ЕСЛИ(A2>0;СЖПРОБЕЛЫ(служ!H2&" "&служ!I2&" "&служ!H3&" "&служ!I3&" "&служ!H4);"Ноль")

Алгоритм использования полученного решения следующий :

  • ввести число в ячейку А2,
  • получить число прописью в А3,
  • скопировать в Буфер обмена (CTRL+C),
  • вставить в любую открытую книгу «Как значение» (Главная/ Буфер обмена/ Вставить/ Вставить как значение).

В статье Число прописью (динамический вариант) показано как создать формулу, позволяющую переводить число в текст практически с таким же удобством, как и в случае использования макроса.

Связанные статьи

Похожие задачи
Прочитайте другие статьи, решающие похожие задачи в MS Excel. Это позволит Вам решать широкий класс подобных задач.
Средняя: 4.8 (4 оценок)

Комментарии

MCH

Решение без VBA, одной формулой
http://www.excelworld.ru/forum/3-3521-1

Обновленная ссылка:
http://www.excelworld.ru/forum/3-9902-1

xaxa74

извините, но Ваша ссылка "404",а жаль...

xaxa74

И где,интересно, взять "файл примера"???

MISHA-DOM

Спасибо большое, мне очень помогло. Ведь существуют конечно же макросы для этих целей, но тогда файл будет привязан к конкретному компьютеру, а с этими формулами так можно будет сделать везде.