Дата прописью в excel макрос

Узнаем как написать дату и месяц прописью в Excel (в том числе в именительном и родительном падежах).


Приветствую всех, дорогие читатели блога TutorExcel.Ru.

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

Вот и в Excel иногда требуется указать дату в таком виде, поэтому давайте подробно разберемся какие у нас есть варианты реализации.

Запись с помощью настройки формата ячейки

В Excel существует достаточно большое количество форматов отображения даты.

Давайте запишем дату в произвольную ячейку и перейдем в ее формат (щелкаем по ячейке правой кнопкой мыши и выбираем Формат ячейки, или просто нажимаем сочетание клавиш Ctrl + 1).

В открывшемся окне нас интересует вкладка Число:

Применение формата ячеек

Среди форматов дат выбираем запись месяца прописью и получаем:

Запись через формат ячеек

Можно выбрать запись как со звездочкой (символ «*»), так и без, при этом различие отображения будет заключаться в изменении вида записи при смене настроек времени и даты операционной системы.

Идем дальше и перейдем к формульному решению задачи.

Запись с помощью формул

Как мы уже разбирали в примере визуализации половозрастной пирамиды, формат любой ячейки записывается с помощью маски отображения. В случае с датой наиболее популярный вид записи (например, для 12.11.2016) выглядит как ДД.ММ.ГГГГ, где Д — день, М — месяц, Г — год.

Поэтому такого же результата мы сможем добиться воспользовавшись стандартной функцией ТЕКСТ (в английской версии TEXT), которая преобразует заданный текст в определяемый нами формат записи.

В качестве формата записи в данном случае указываем [$-FC19]Д ММММ ГГГГ г.;@, применяем функцию для даты и получаем:

Функция ТЕКСТ и формат FC19 (русский язык)

Чуть подробнее остановимся на формате.

В записи формата [$-FC19] как раз и отвечает за корректный формат отображения даты в родительном падеже (можете попробовать убрать [$-FC19] и посмотреть что получится).

Если же нужно отобразить месяц не на русском, а, например, на украинском языке, то используйте [$-FC22] (для белорусского [$-FC23]):

Функция ТЕКСТ и формат FC22 (украинский язык)

Ок, с полной записью даты и месяца разобрались, но что если нам нужен только месяц?

Как записать месяц прописью?

Как и в примере выше воспользуемся функцией ТЕКСТ. Формат «ММММ» даст нам полную запись месяца (в именительном падеже):

Именительный падеж (Вариант 1)

Ещё одним способом является совместное применение функций МЕСЯЦ (в английской версии MONTH) и ВЫБОР (английский вариант CHOOSE).
Месяц вернёт нам порядковый номер месяца указанной даты (от 1 до 12), а ВЫБОР сопоставит числовому значению текстовое (где 1 — январь, 2 — февраль, …, 12 — декабрь):

Именительный падеж (Вариант 2)

Если же мы пишем число с месяцем и годом, то зачастую месяц нужно указать в родительном падеже (а не в именительном как в примере выше), например, 2 февраля 2015 года или 14 августа 2012 года и т.п.

Здесь нам опять поможет формат [$-FC19]ММММ, который записывает месяц в дате в родительном падеже, отличие от предыдущего варианта записи только в том, что мы убрали из записи день и год:

Родительный падеж (Вариант 1)

Есть и альтернативный вариант. На помощь опять придут уже знакомые функции МЕСЯЦ и ВЫБОР, только тут вместо именительного падежа для месяцев прописываем родительный (меняем окончания):

Родительный падеж (Вариант 2)

На этом все. Выбирайте наиболее понравившийся и удобный для вас способ.

Скачать файл с примером.

Спасибо за внимание!
Если у вас остались вопросы по теме статьи — пишите в комментариях.

Удачи вам и до скорых встреч на страницах блога TutorExcel.Ru!

Поделиться с друзьями:
Поиск по сайту:

Пользовательская функция «ДатаПрописью» предназначена для преобразования даты из числового формата Excel в полную текстовую форму. Интервал преобразуемых дат составляет с 2001 по 2099 год. Используется в шаблонах доверенностей, договоров, соглашений, решений, уставов и других документов, заполняющихся в программе Excel и предусматривающих наличие строки с датой прописью. Формат преобразования: 01.01.2001 — «Первого января две тысячи первого года».

Добавить функцию «ДатаПрописью» в рабочую книгу Excel можно двумя способами: импортировать готовый модуль с функцией или самостоятельно добавить программный код в имеющийся модуль, или создав для этого новый.

Импорт готового модуля в книгу Excel — самый простой способ добавления функции «ДатаПрописью».

Если вы хотите, чтобы функция «ДатаПрописью» была доступна из всех рабочих книг на вашем компьютере, импортируйте скачанный модуль в Личную книгу макросов.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

‘Преобразование даты из числового формата в текст с 2001 по 2099 год

Public Function ДатаПрописью(md As Date) As String

If (md < 36892) Or (md > 73050) Then

ДатаПрописью = «Преобразуемая дата должна быть с 2001 по 2099 год!»

Else

Dim den As Byte, dg(1 To 4) As Byte, mes As Byte, god As Byte, _

mespr As String, dmgpr As String

den = Day(md)

mes = Month(md)

god = (Year(md) Mod 100)

dg(1) = god Mod 10

dg(2) = Fix(god / 10)

dg(3) = den Mod 10

dg(4) = Fix(den / 10)

Dim dgpr(1 To 4) As String, i1 As Byte

For i1 = 1 To 4

If (i1 = 1) Or (i1 = 3) Then

If dg(i1 + 1) = 1 Then

dgpr(i1) = Choose(dg(i1) + 1, «десятого «, «одиннадцатого «, «двенадцатого «, _

«тринадцатого «, «четырнадцатого «, «пятнадцатого «, «шестнадцатого «, _

«семнадцатого «, «восемнадцатого «, «девятнадцатого «)

Else

dgpr(i1) = Choose(dg(i1) + 1, «», «первого «, «второго «, _

«третьего «, «четвертого «, «пятого «, «шестого «, _

«седьмого «, «восьмого «, «девятого «)

End If

ElseIf (i1 = 2) Or (i1 = 4) Then

If dg(i1 1) = 0 Then

dgpr(i1) = Choose(dg(i1) + 1, «», «», «двадцатого «, _

«тридцатого «, «сорокового «, «пятидесятого «, «шестидесятого «, _

«семидесятого «, «восьмидесятого «, «девяностого «)

Else

dgpr(i1) = Choose(dg(i1) + 1, «», «», «двадцать «, _

«тридцать «, «сорок «, «пятьдесят «, «шестьдесят «, _

«семьдесят «, «восемьдесят «, «девяносто «)

End If

End If

Next

mespr = Choose(mes, «января «, «февраля «, «марта «, «апреля «, «мая «, _

«июня «, «июля «, «августа «, «сентября «, «октября «, «ноября «, «декабря «)

dmgpr = dgpr(4) & dgpr(3) & mespr & «две тысячи « & dgpr(2) & dgpr(1) & «года»

ДатаПрописью = Replace(dmgpr, Left(dmgpr, 1), UCase(Left(dmgpr, 1)), 1, 1)

End If

End Function

Если вы хотите, чтобы функция «ДатаПрописью» была доступна из всех рабочих книг на вашем компьютере, вставьте приведенный код в модуль, расположенный в Личной книге макросов.

Итак, если вы импортировали модуль или создали новый и вставили в него код, можете вызывать Мастер функций и работать с функцией «ДатаПрописью», как с любой другой, встроенной в Excel. Найти ее вы сможете в разделе «Определенные пользователем». В настройках вашей программы Excel должно быть разрешено выполнение макросов.

Функцию «ДатаПрописью» в ячейки рабочего листа можно вписывать и вручную. Текст вводимой формулы будет зависеть от того, где расположен модуль с функцией:

Если вы планируете книгу с функцией «ДатаПрописью» передавать на другой компьютер, модуль с ней должен быть в передаваемой книге.

MulTEx »

1 Май 2011              18917 просмотров

ПрописьДата

Данная функция является частью надстройки MulTEx


Дата и время прописью

Функция выводит в пропись дату, т.е. из даты "01.01.2009" делает текст "первое января две тысячи девятого года". Зачем это может быть нужно? Например, когда необходимо записать в шапке(ну или где там еще) отчета не просто дату(01.01.2009), а дату прописью(первое января две тысячи девятого года). Результат доступен на русском и английском языках.

Вызов команды через стандартный диалог:

Мастер функцийКатегория «MulTEx»ПрописьДата

Вызов с панели MulTEx:

Сумма/Поиск/ФункцииТекстовыеПрописьДата

Синтаксис:
=ПрописьДата(I10;1;0;»RUS»)


Дата(

I10

) — указывается дата, либо ссылка на ячейку с датой. Вместо ссылки на ячейку можно сразу указать дату

=ПрописьДата(09.01.2009;1;0;»RUS»)

Время(1) — необязательный аргумент. Если указан, либо присвоено значение 1 или ИСТИНА — помимо даты, в пропись также выводится значение времени(09.10.2009 18:12:05девятое октября две тысячи девятого года восемнадцать часов двенадцать минут пять секунд).
Если значение времени отсутствует в ячейке, либо равно нулю, то в пропись будет выведено нулевое значение (ноль часов ноль минут ноль секунд). Подписи дней, месяцев,часов и минут склоняются (Тридцатое мая, Первое сентября, Один час, Два часа)

ТолькоПодпись(0) — необязательный аргумент. Если указан, либо присвоено значение 1 или ИСТИНА — в пропись выводится только название месяца и дописывается пропись года (09 октября 2009 года)

Язык(«RUS») — необязательный аргумент. Если не указан или указано «RUS», то текст будет выведен на русском языке. Если указать «EN» («en»,»En» — регистр неважен), то текст будет выведен на английском языке. Если аргумент Время равен 1 или ИСТИНА, то время будет выведено в пропись на том же языке, что и дата.


Расскажи друзьям, если статья оказалась полезной:

  Плейлист   Видеоинструкции по использованию надстройки MulTEx

Месяц из даты прописью

Skorpika

Дата: Вторник, 16.12.2014, 00:11 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
20% ±


Excel 2003 и 13

Подскажите код.
есть строчка которая из Текстбокса (LblAODateCh1) вытаскивает месяц, вот только цифрой, а как сделать чтобы была пропись.
Sheets(«ЧекЛист»).Cells(1, 5) = Month(LblAODateCh1)
Спс.

 

Ответить

alex77755

Дата: Вторник, 16.12.2014, 00:27 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 362


Репутация:

64

±

Замечаний:
0% ±


[vba]

Код

Sub WQWER()
     MsgBox Format(Now, «mmmm»)
End Sub

[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru

 

Ответить

Wasilich

Дата: Вторник, 16.12.2014, 00:29 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Через оператор Select Case. Или так
[vba]

Код

=Format(Month(«1.» & LblAODateCh1 & «.2014»), «mmmm»)

[/vba]

Сообщение отредактировал WasilicВторник, 16.12.2014, 00:34

 

Ответить

MCH

Дата: Вторник, 16.12.2014, 00:35 |
Сообщение № 4

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


можно через Choose()

 

Ответить

Skorpika

Дата: Вторник, 16.12.2014, 00:40 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
20% ±


Excel 2003 и 13

Sub Макрос1()
Cells(2, 1) = Format(Range(«A1»), «mmmm»)
End Sub
во, получилось. спс за формат.
Wasilic, не, в боксе — 7.12.2014
Забавно, но с cells такая фишка не прокатывает
….3 часа в помойку из-за 1-ой строчки >(

Сообщение отредактировал SkorpikaВторник, 16.12.2014, 00:48

 

Ответить

Wasilich

Дата: Вторник, 16.12.2014, 00:57 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

из Текстбокса (LblAODateCh1) вытаскивает месяц, вот только цифрой,

[vba]

Код

LblAODateCh1=12
Cells(2, 1) = Format(Month(«1.» & LblAODateCh1 & «.2014»), «mmmm»)

[/vba]

но с cells такая фишка не прокатывает

Не верю. :D

 

Ответить

Skorpika

Дата: Вторник, 16.12.2014, 01:10 |
Сообщение № 7

Группа: Пользователи

Ранг: Новичок

Сообщений: 32


Репутация:

0

±

Замечаний:
20% ±


Excel 2003 и 13

Изначально: TextBox LblAODateCh1.text = 12,12,2014
Мне в cells(2, 1) нужно записать «декабрь»
Cells(2, 1) = Format(cells(1, 1), «mmmm») почему то не катит, как впрочем и от бокса.
Cells(2, 1) = Format(Range(«A1»), «mmmm») — работает, вот что я имел в виду.
мож я что и не догоняю..
в любом случае всем спс

 

Ответить

Wasilich

Дата: Вторник, 16.12.2014, 01:31 |
Сообщение № 8

Группа: Друзья

Ранг: Старожил

Сообщений: 1232


Репутация:

326

±

Замечаний:
0% ±


2003

Изначально: TextBox LblAODateCh1.text = 12,12,2014

Изначально было так

(LblAODateCh1) вытаскивает месяц, вот только цифрой

А вот это:

Cells(2, 1) = Format(cells(1, 1), «mmmm») почему то не катит

Мож я чего не догоняю %)

К сообщению приложен файл:

Skorpika.xls
(20.5 Kb)

 

Ответить

krosav4ig

Дата: Вторник, 16.12.2014, 02:45 |
Сообщение № 9

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

если нужно получить название месяца из числа, то можно проще
[vba]

Код

LblAODateCh1=12
Cells(2, 1) = Format(LblAODateCh1*30, «mmmm»)

[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

 

Ответить

alex77755

Дата: Вторник, 16.12.2014, 09:36 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 362


Репутация:

64

±

Замечаний:
0% ±


Сорри. погорячился


Могу помочь в VB6, VBA
Alex77755@mail.ru

Сообщение отредактировал alex77755Вторник, 16.12.2014, 09:47

 

Ответить

alex77755

Дата: Вторник, 16.12.2014, 09:45 |
Сообщение № 11

Группа: Проверенные

Ранг: Обитатель

Сообщений: 362


Репутация:

64

±

Замечаний:
0% ±


Сорри! Но, кстати, работает-таки
[vba]

Код

Cells(1, 1) = «12, 12, 2014»
Cells(2, 1) = Format(Cells(1, 1), «mmmm») ‘ работает
Cells(3, 1) = Format(Range(«A1»), «mmmm») ‘ работает
Text = «12, 12, 2014»
MsgBox Format(Text, «mmmm»)

[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru

 

Ответить

Пользовательские функции (формулы, UDF) для написания даты прописью
(дата словами, время прописью), доступные при использовании надстройки FillDocuments

Инструкция, где в Excel найти эти функции, и как применить

Функция (формула) Пример получаемого значения
=Пропись_Дата(B18) Восьмое января две тысячи тринадцатого года
=Пропись_Дата_сЧислами(B18) 8 января 2013 года
=Пропись_Время(B18) восемь часов пятьдесят ноль минут сорок пять секунд
=Пропись_Время_сЧислами(B18) 8 часов 50 минут 45 секунд
=Пропись_ДатаВремя(B18) Восьмое января две тысячи тринадцатого года, восемь часов пятьдесят ноль минут сорок пять секунд
=Пропись_ДатаВремя_сЧислами(B18) 8 января 2013 года, 8 часов 50 минут 45 секунд
Исходное значение в ячейке B18 08.01.2013 8:50

Like this post? Please share to your friends:
  • Дата последнего изменения файла в excel
  • Дата последнего дня месяца excel
  • Дата понедельника по номеру недели excel
  • Дата подпись расшифровка образец word скачать
  • Дата по номеру месяца excel