Дата и месяц прописью в Excel
Узнаем как написать дату и месяц прописью в Excel (в том числе в именительном и родительном падежах).
Приветствую всех, дорогие читатели блога TutorExcel.Ru.
Подписывая какие-либо документы мы помимо собственного автографа очень часто вписываем туда и текущую дату в виде числа, месяца и года. При этом мы почти никогда там не встречаем месяц записанный в численном формате. Ведь, например, дата записанная как 12.11.2016 куда сложнее воспринимается и читается чем 12 ноября 2016 г.
Вот и в Excel иногда требуется указать дату в таком виде, поэтому давайте подробно разберемся какие у нас есть варианты реализации.
Запись с помощью настройки формата ячейки
В Excel существует достаточно большое количество форматов отображения даты.
Давайте запишем дату в произвольную ячейку и перейдем в ее формат (щелкаем по ячейке правой кнопкой мыши и выбираем Формат ячейки, или просто нажимаем сочетание клавиш Ctrl + 1).
В открывшемся окне нас интересует вкладка Число:
Среди форматов дат выбираем запись месяца прописью и получаем:
Можно выбрать запись как со звездочкой (символ «*»), так и без, при этом различие отображения будет заключаться в изменении вида записи при смене настроек времени и даты операционной системы.
Идем дальше и перейдем к формульному решению задачи.
Запись с помощью формул
Как мы уже разбирали в примере визуализации половозрастной пирамиды, формат любой ячейки записывается с помощью маски отображения. В случае с датой наиболее популярный вид записи (например, для 12.11.2016) выглядит как ДД.ММ.ГГГГ, где Д — день, М — месяц, Г — год.
Поэтому такого же результата мы сможем добиться воспользовавшись стандартной функцией ТЕКСТ (в английской версии TEXT), которая преобразует заданный текст в определяемый нами формат записи.
В качестве формата записи в данном случае указываем [$-FC19]Д ММММ ГГГГ \г\.;@, применяем функцию для даты и получаем:
Чуть подробнее остановимся на формате.
В записи формата [$-FC19] как раз и отвечает за корректный формат отображения даты в родительном падеже (можете попробовать убрать [$-FC19] и посмотреть что получится).
Если же нужно отобразить месяц не на русском, а, например, на украинском языке, то используйте [$-FC22] (для белорусского [$-FC23]):
Ок, с полной записью даты и месяца разобрались, но что если нам нужен только месяц?
Как записать месяц прописью?
Как и в примере выше воспользуемся функцией ТЕКСТ. Формат «ММММ» даст нам полную запись месяца (в именительном падеже):
Ещё одним способом является совместное применение функций МЕСЯЦ (в английской версии MONTH) и ВЫБОР (английский вариант CHOOSE).
Месяц вернёт нам порядковый номер месяца указанной даты (от 1 до 12), а ВЫБОР сопоставит числовому значению текстовое (где 1 — январь, 2 — февраль, …, 12 — декабрь):
Если же мы пишем число с месяцем и годом, то зачастую месяц нужно указать в родительном падеже (а не в именительном как в примере выше), например, 2 февраля 2015 года или 14 августа 2012 года и т.п.
Здесь нам опять поможет формат [$-FC19]ММММ, который записывает месяц в дате в родительном падеже, отличие от предыдущего варианта записи только в том, что мы убрали из записи день и год:
Есть и альтернативный вариант. На помощь опять придут уже знакомые функции МЕСЯЦ и ВЫБОР, только тут вместо именительного падежа для месяцев прописываем родительный (меняем окончания):
На этом все. Выбирайте наиболее понравившийся и удобный для вас способ.
Спасибо за внимание!
Если у вас остались вопросы по теме статьи — пишите в комментариях.
Источник
Форматирование даты прописью на русском языке
Как в Пайтоне перевести дату из строки в формате dd.mm.yyyy в прописную форму на русском языке, оставив год числом?
«01.07.2009» → «первое июля 2009 года»
3 ответа 3
Надеюсь я не ошибся, что формы одни и те же там всегда:
Мне не попадалась библиотека, которая умеет день месяца как порядковое числительное словами в среднем роде на русском выводить (datetime, pendulum, icu.DateFormat , babel, humanize, num2words, inflect не умеют). Конечно, легко руками преобразовать для выбранных языков:
Если другие языки поддерживать не надо, то достаточно здесь только d = datetime.strptime(‘01.07.2009’, ‘%d.%m.%Y’) из стандартной библиотеки использовать и месяцы ( d.month ) также руками в слова в нужном падеже и регистре букв преобразовывать, например, как в ответе @Кирилл Малышев.
Код создаёт промежуточный объект-даты, чтобы убедиться в её корректности, чтобы не принимать ошибочные даты типа: 30.02.2000 .
На корректную работу с датами на русском языке можно настроить и стандартными средствами Linux и Python.
На современном RedHat-семействе (8.x) это выглядит примерно так: установка необходимого пакета локализации на русский язык и настройка локали и раскладки клавиатуры в системе:
После этого Linux начнет лучше понимать и отображать русские тексты.
Теперь Python. Сам по себе он не подхватит системную локаль, нужны дополнительные вызовы функций модуля locale :
После этого Python начнет работать с русскими данными как с родными:
Вариантов же, стандартными средствами получать строку с датой, где число представлено словом ( первое , второе , третье , и т.д.) — нет.
Источник
Дата прописью
я пользуюсь вот этой
// Функция Дата прописью
// Параметры:
// ДП — Дата
// Возвращаемое значение:
// дата прописью
//
// Модификация для v8: Evgeny Migachev
Функция ДатаПрописью(ДП) Экспорт
стрРез = «»;
Д=Формат(ДП,»ДЛФ=D»);
спсМес = Новый СписокЗначений;
спсМес.Добавить(«января»);
спсМес.Добавить(«февраля»);
спсМес.Добавить(«марта»);
спсМес.Добавить(«апреля»);
спсМес.Добавить(«мая»);
спсМес.Добавить(«июня»);
спсМес.Добавить(«июля»);
спсМес.Добавить(«августа»);
спсМес.Добавить(«сентября»);
спсМес.Добавить(«октября»);
спсМес.Добавить(«ноября»);
спсМес.Добавить(«декабря»);
спсЧисл = Новый СписокЗначений;
спсЧисл.Добавить(«первое»,»первого»);
спсЧисл.Добавить(«второе»,»второго»);
спсЧисл.Добавить(«третье»,»третьего»);
спсЧисл.Добавить(«четвертое»,»четвертого»);
спсЧисл.Добавить(«пятое»,»пятого»);
спсЧисл.Добавить(«шестое»,»шестого»);
спсЧисл.Добавить(«седьмое»,»седьмого»);
спсЧисл.Добавить(«восьмое»,»восьмого»);
спсЧисл.Добавить(«девятое»,»девятого»);
//числительные им.падеж
спсЧислИм = Новый СписокЗначений;
спсЧислИм.Добавить(«тысяча»,»тысячного»);
спсЧислИм.Добавить(«две тысячи»,»двухтысячного»);
спсЧислИм.Добавить(«три тысячи»,»трехтысячного»);
спсЧислИм.Добавить(«четыре тысячи»,»четырёхтысячного»);
спсЧислИм.Добавить(«пять»,»пятитысячного»);
спсЧислИм.Добавить(«шесть»,»шеститысячного»);
спсЧислИм.Добавить(«семь»,»семитысячного»);
спсЧислИм.Добавить(«восемь»,»восьмитысячного»);
спсЧислИм.Добавить(«девять»,»девятитысячного»);
спсСотни = Новый СписокЗначений;
спсСотни.Добавить(«сто»);
спсСотни.Добавить(«двести»);
спсСотни.Добавить(«триста»);
спсСотни.Добавить(«четыреста»);
спсСотни.Добавить(«пятьсот»);
спсСотни.Добавить(«шестьсот»);
спсСотни.Добавить(«семьсот»);
спсСотни.Добавить(«восемьсот»);
спсСотни.Добавить(«девятьсот»);
//десятки им.падеж
спсДесИм = Новый СписокЗначений;
спсДесИм.Добавить(«»,»десятого»);
спсДесИм.Добавить(«двадцать»,»двадцатого»);
спсДесИм.Добавить(«тридцать»,»тридцатого»);
спсДесИм.Добавить(«сорок»,»сорокового»);
спсДесИм.Добавить(«пятьдесят»,»пятидесятого»);
спсДесИм.Добавить(«шестьдесят»,»шестидесятого»);
спсДесИм.Добавить(«семьдесят»,»семидесятого»);
спсДесИм.Добавить(«восемьдесят»,»восьмидесятого»);
спсДесИм.Добавить(«девяносто»,»девяностого»);
//субдесятки род.падеж
спсСубДесРод = Новый СписокЗначений;
спсСубДесРод.Добавить(«одиннадцатого»);
спсСубДесРод.Добавить(«двенадцатого»);
спсСубДесРод.Добавить(«тринадцатого»);
спсСубДесРод.Добавить(«четырнадцатого»);
спсСубДесРод.Добавить(«пятнадцатого»);
спсСубДесРод.Добавить(«шестнадцатого»);
спсСубДесРод.Добавить(«семнадцатого»);
спсСубДесРод.Добавить(«восемнадцатого»);
спсСубДесРод.Добавить(«девятнадцатого»);
спсДес = Новый СписокЗначений;
спсДес.Добавить(«десятое»);
спсДес.Добавить(«двадцатое»,»двадцать»);
спсДес.Добавить(«тридцатое»,»тридцать»);
спсДес.Добавить(«сороковое»,»тридцать»);
спсДес.Добавить(«пятидесятое»,»тридцать»);
спсДес.Добавить(«шестидесятое»,»тридцать»);
спсДес.Добавить(«семидесятое»,»тридцать»);
спсСубДес = Новый СписокЗначений;
спсСубДес.Добавить(«одиннадцатое»);
спсСубДес.Добавить(«двенадцатое»);
спсСубДес.Добавить(«тринадцатое»);
спсСубДес.Добавить(«четырнадцатое»);
спсСубДес.Добавить(«пятнадцатое»);
спсСубДес.Добавить(«шестнадцатое»);
спсСубДес.Добавить(«семнадцатое»);
спсСубДес.Добавить(«восемнадцатое»);
спсСубДес.Добавить(«девятнадцатое»);
спсДаты = СтрЗаменить(СокрЛП(Д),».»,Символы.ПС);
//разбираем день
стрДень = СокрЛП(Число(СтрПолучитьСтроку(спсДаты,1)));
Если СтрДлина(стрДень)=1 Тогда
стрДень = спсЧисл.Получить(Число(стрДень)-1).Значение;
Иначе
десДень = Число(Лев(стрДень,1));
едДень = Число(Прав(стрДень,1));
Если едДень=0 Тогда
стрДень = спсДес.Получить(десДень-1).Значение;
Иначе
Если десДень>1 Тогда
т = Строка(спсДес.Получить(десДень-1));
стрДень = т+» «+Строка(спсЧисл.Получить(едДень-1).Значение);
Иначе
стрДень = спсСубДес.Получить(едДень-1).Значение;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//разбираем месяц
стрМес = спсМес.Получить(Число(СтрПолучитьСтроку(спсДаты,2))-1).Значение;
//разбираем год
стрГод = СтрПолучитьСтроку(спсДаты,3);
длинаГода = СтрДлина(стрГод);
Если длинаГода=4 Тогда
тыс = Сред(стрГод,1,1); сот = Сред(стрГод,2,1); дес = Сред(стрГод,3,1); ед = Сред(стрГод,4,1);
_т = спсЧислИм.Получить(Число(тыс)-1).Значение;
Если (Число(сот)=0) и (Число(дес)=0) и (Число(ед)=0) Тогда
миллениум = Строка(спсЧислИм.Получить(Число(тыс)-1));
стрГод = миллениум;
Иначе
с = «»; дс = «»; е = «»;
Если Число(сот)<>0 Тогда
с = спсСотни.Получить(Число(сот)-1).Значение;
КонецЕсли;
Если Число(дес)<>0 Тогда
Если Число(ед)=0 Тогда
дг = Строка(спсДесИм.Получить(Число(дес)-1));
дс = дг;
Иначе
дс = спсСубДесРод.Получить(Число(ед)-1).Значение;
КонецЕсли;
КонецЕсли;
Если (Число(дес)>1) или (Число(дес)=0) Тогда
Если Число(ед)<>0 Тогда
е =Строка(спсЧисл.Получить(Число(ед)-1));
КонецЕсли;
КонецЕсли;
стрГод = Строка(_т)+» «+Строка(с)+» «+Строка(дс)+» «+Строка(е);
КонецЕсли;
Иначе
КонецЕсли;
стрГод = стрГод+» года»;
стрГод = СтрЗаменить(стрГод,» «,» «);
стрРез = Строка(стрДень)+» «+Строка(стрМес)+» «+Строка(стрГод);
стрРез = СтрЗаменить(стрРез,» «,» «);
Возврат стрРез;
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
сообщить(ДатаПрописью(РеквизитДатаНаФорме));
КонецПроцедуры
Источник
Название месяца прописью в EXCEL
history 17 июля 2016 г.
Если в ячейке содержится дата или номер месяца, то с помощью формул или Формата ячейки можно вывести название месяца. Также решим обратную задачу: из текстового значения названия месяца получим его номер.
Пусть в ячейке В6 содердится дата 05.09.2016
С помощью формулы =ТЕКСТ(B6;»ММММ») можно вывести полное название месяца с заглавной буквы в именительном падеже, Сентябрь . Чтобы вывести название со строчной буквы используйте функцию СТРОЧН() .
Примечание : Результат предыдущей формулы — текстовое значение. Если нужно, чтобы в ячейке была дата, то используйте Формат ячеек (нажмите сочетание клавиш CTRL+1 ). О форматах даты подробнее можно прочитать в статье Пользовательский формат ДАТЫ и ВРЕМЕНИ в MS EXCEL
Формула =ТЕКСТ(B6;»МММ») выведет сокращенное название месяца (3 буквы).
Особый формат =ТЕКСТ(B6;»[$-FC19] ММММ») выведет полное название месяца с учетом склонения, т.е. сентября . Этот формат удобен для вывода фраз, например, Сегодня 1 сентября , но может работать не на всех компьютерах.
Если месяц задан числом от 1 до 12, то полное название можно вывести с помощью формулы =ТЕКСТ(ДАТА(;B14;1);»ММММ») . Название со склонением можно вывести с помощью формулы =ВЫБОР(B14;»января»;»февраля»;»марта»;»апреля»;»мая»;»июня»;»июля»;»августа»;»сентября»;»октября»;»ноября»;»декабря») .
Если требуется решить обратную задачу, то есть, имея название месяца, получить его номер, то используйте формулу =МЕСЯЦ(ДАТАЗНАЧ(1&B21&2011))
Название месяца должно быть в именительном падеже и без опечаток.
Для наглядности можно составить перечень месяцев с их номерами и с помощью функции ВПР() выбирать название месяца по его номеру (см. файл примера ).
Источник
Developing.ru
Дата прописью в Word
Добридень.
На просторах интернета нашла следующий макрос:
Dim Day(1 To 21) As String
Dim Month(1 To 12) As String
Dim Year(1 To 14) As String
Dim DD, MM, YY As Integer
Day(1) = «первое »
Day(2) = «второе »
Day(3) = «третье »
Day(4) = «четвертое »
Day(5) = «пятое »
Day(6) = «шестое »
Day(7) = «седьмое »
Day(8) = «восьмое »
Day(9) = «девятое »
Day(10) = «десятое »
Day(11) = «одиннадцатое »
Day(12) = «двенадцатое »
Day(13) = «тринадцатое »
Day(14) = «четырнадцатое »
Day(15) = «пятнадцатое »
Day(16) = «шестнадцатое »
Day(17) = «семнадцатое »
Day(18) = «восемнадцатое »
Day(19) = «девятнадцатое »
Day(20) = «двадцатое »
Day(21) = «тридцатое «
Month(1) = «января »
Month(2) = «февраля »
Month(3) = «марта »
Month(4) = «апреля »
Month(5) = «мая »
Month(6) = «июня »
Month(7) = «июля »
Month(8) = «августа »
Month(9) = «сентября »
Month(10) = «октября »
Month(11) = «ноября »
Month(12) = «декабря «
Year(1) = «первого »
Year(2) = «второго »
Year(3) = «третьего »
Year(4) = «четвертого »
Year(5) = «пятого »
Year(6) = «шестого »
Year(7) = «седьмого »
Year(8) = «восьмого »
Year(9) = «девятого »
Year(10) = «десятого »
Year(11) = «одиннадцатого »
Year(12) = «двенадцатого »
Year(13) = «тринадцатого »
Year(14) = «четырнадцатого «
в MS Word создать поле (Alt+F9 затем Ctrl+F9, затем вставить между фигурных скобок
DATE \@ «d MMMM yyyy ‘г.'» \* MERGEFORMAT) или воспользоваться мастером полей (Вставить->Поле->Date (задать формат))
и забыть написанное в предыдущем посте как страшный сон
в MS Word создать поле (Alt+F9 затем Ctrl+F9, затем вставить между фигурных скобок
DATE \@ «d MMMM yyyy ‘г.'» \* MERGEFORMAT) или воспользоваться мастером полей (Вставить->Поле->Date (задать формат))
и забыть написанное в предыдущем посте как страшный сон
Источник