Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/выделение из количества дней годы, месяцы, дни - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
выделение из количества дней годы, месяцы, дни
Sashagor1982 Дата: Вторник, 13.12.2016, 07:20 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 288
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Уважаемые коллеги, подскажите есть какой-либо простой способ из определенного количества дней, выделения лет, месяцев и дней, без математических расчетов, например подсчет стажа работы.


Сообщение отредактировал Sashagor1982 - Вторник, 13.12.2016, 07:21
 
Ответить
СообщениеУважаемые коллеги, подскажите есть какой-либо простой способ из определенного количества дней, выделения лет, месяцев и дней, без математических расчетов, например подсчет стажа работы.

Автор - Sashagor1982
Дата добавления - 13.12.2016 в 07:20
Pelena Дата: Вторник, 13.12.2016, 09:10 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
А количество дней Вы как получаете? Вычитанием дат? Тогда смотрите в сторону функции РАЗНДАТ()


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеА количество дней Вы как получаете? Вычитанием дат? Тогда смотрите в сторону функции РАЗНДАТ()

Автор - Pelena
Дата добавления - 13.12.2016 в 09:10
nilem Дата: Вторник, 13.12.2016, 09:11 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Sashagor1982, привет
у меня получилось вот так:
[vba]
Код
Sub ertert()
Dim dtB As Date, dtE As Date
Dim nK&
dtB = #3/12/1992# '12.03.1992
dtE = #10/21/2016# '21.10.2016

nK = DateDiff("yyyy", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("yyyy", nK, dtB ) : [a1] = "years " & nK

nK = DateDiff("m", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("m", nK, dtB ) : [a2] = "months " & nK

nK = DateDiff("d", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
[a3] = "days " & nK
'years 24
'months 7
'Days 9
End Sub
[/vba]
[p.s.]наверняка есть какие-то готовые функции[/p.s.]
dtB ) - д.б. без пробела


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Вторник, 13.12.2016, 10:34
 
Ответить
СообщениеSashagor1982, привет
у меня получилось вот так:
[vba]
Код
Sub ertert()
Dim dtB As Date, dtE As Date
Dim nK&
dtB = #3/12/1992# '12.03.1992
dtE = #10/21/2016# '21.10.2016

nK = DateDiff("yyyy", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("yyyy", nK, dtB ) : [a1] = "years " & nK

nK = DateDiff("m", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("m", nK, dtB ) : [a2] = "months " & nK

nK = DateDiff("d", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
[a3] = "days " & nK
'years 24
'months 7
'Days 9
End Sub
[/vba]
[p.s.]наверняка есть какие-то готовые функции[/p.s.]
dtB ) - д.б. без пробела

Автор - nilem
Дата добавления - 13.12.2016 в 09:11
dim34rus Дата: Вторник, 13.12.2016, 10:10 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Что такое у Вас dt?
Использование Datediff на предмет расчета разницы лет черевато следующим:
DateDiff("yyyy", #12/31/2015, #01/01/2016, vbUseSystemDayOfWeek, vbUseSystem) = 1

Как указано выше - функция листа РАЗНДАТ(), она вычисляет именно целое количество прошедших лет, месяцев и т.д.


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327
 
Ответить
СообщениеЧто такое у Вас dt?
Использование Datediff на предмет расчета разницы лет черевато следующим:
DateDiff("yyyy", #12/31/2015, #01/01/2016, vbUseSystemDayOfWeek, vbUseSystem) = 1

Как указано выше - функция листа РАЗНДАТ(), она вычисляет именно целое количество прошедших лет, месяцев и т.д.

Автор - dim34rus
Дата добавления - 13.12.2016 в 10:10
nilem Дата: Вторник, 13.12.2016, 10:28 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
DateDiff("yyyy", #12/31/2015, #01/01/2016, vbUseSystemDayOfWeek, vbUseSystem) = 1
Точно, в справке так и написано
Вряд ли в практических расчетах такие даты возможны. Хотя, конечно, можно предусмотреть в коде.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеDateDiff("yyyy", #12/31/2015, #01/01/2016, vbUseSystemDayOfWeek, vbUseSystem) = 1
Точно, в справке так и написано
Вряд ли в практических расчетах такие даты возможны. Хотя, конечно, можно предусмотреть в коде.

Автор - nilem
Дата добавления - 13.12.2016 в 10:28
dim34rus Дата: Вторник, 13.12.2016, 10:41 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 66
Репутация: 10 ±
Замечаний: 0% ±

Excel 2007 - 2013
Вряд ли в практических расчетах такие даты возможны. Хотя, конечно, можно предусмотреть в коде.

Так в Вашем коде если в датах месяца будут наоборот, то правильный результат в годах будет 23, а Ваш код упорно выдаст 24.

Тогда смотрите в сторону функции РАЗНДАТ()


С листа работает, а вот из VBA что-то не получается достучаться до этой функции.


Извращение - это писать формулы в Word'овских таблицах.
ЯД 410014340958327


Сообщение отредактировал dim34rus - Вторник, 13.12.2016, 12:35
 
Ответить
Сообщение
Вряд ли в практических расчетах такие даты возможны. Хотя, конечно, можно предусмотреть в коде.

Так в Вашем коде если в датах месяца будут наоборот, то правильный результат в годах будет 23, а Ваш код упорно выдаст 24.

Тогда смотрите в сторону функции РАЗНДАТ()


С листа работает, а вот из VBA что-то не получается достучаться до этой функции.

Автор - dim34rus
Дата добавления - 13.12.2016 в 10:41
Sashagor1982 Дата: Вторник, 13.12.2016, 16:58 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 288
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Еще вопрос, как к определенной дате прибавить год, минус один день и.е. 22.12.2016 получить 22.11.2017
[moder]Нарушение п.5q Правил форума[/moder]


Сообщение отредактировал _Boroda_ - Вторник, 13.12.2016, 17:13
 
Ответить
СообщениеЕще вопрос, как к определенной дате прибавить год, минус один день и.е. 22.12.2016 получить 22.11.2017
[moder]Нарушение п.5q Правил форума[/moder]

Автор - Sashagor1982
Дата добавления - 13.12.2016 в 16:58
Pelena Дата: Вторник, 13.12.2016, 17:12 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
Этот вопрос к теме "выделение из количества дней годы, месяцы, дни" не относится.
[p.s.]Так и не поняла, первичная задача решена?[/p.s.]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЭтот вопрос к теме "выделение из количества дней годы, месяцы, дни" не относится.
[p.s.]Так и не поняла, первичная задача решена?[/p.s.]

Автор - Pelena
Дата добавления - 13.12.2016 в 17:12
Sashagor1982 Дата: Вторник, 13.12.2016, 18:21 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 288
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
Да, задача решена.
 
Ответить
СообщениеДа, задача решена.

Автор - Sashagor1982
Дата добавления - 13.12.2016 в 18:21
Sashagor1982 Дата: Суббота, 04.02.2017, 23:26 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 288
Репутация: -6 ±
Замечаний: 0% ±

Excel 2007
В продолжение темы подскажите как доработать код:
[vba]
Код
Sub ertert()
Dim dtB As Date, dtE As Date
Dim nK&
dtB = #3/12/1992# '12.03.1992
dtE = #10/21/2016# '21.10.2016

nK = DateDiff("yyyy", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("yyyy", nK, dtB ) : [a1] = "years " & nK

nK = DateDiff("m", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("m", nK, dtB ) : [a2] = "months " & nK

nK = DateDiff("d", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
[a3] = "days " & nK
'years 24
'months 7
'Days 9
End Sub
[/vba]
что бы работать с ячейками A1 и A2, если даты в них сохранены в виде текста "12.03.1992" и т.д. Заранее спасибо.
 
Ответить
СообщениеВ продолжение темы подскажите как доработать код:
[vba]
Код
Sub ertert()
Dim dtB As Date, dtE As Date
Dim nK&
dtB = #3/12/1992# '12.03.1992
dtE = #10/21/2016# '21.10.2016

nK = DateDiff("yyyy", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("yyyy", nK, dtB ) : [a1] = "years " & nK

nK = DateDiff("m", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
dtB = DateAdd("m", nK, dtB ) : [a2] = "months " & nK

nK = DateDiff("d", dtB, dtE, vbUseSystemDayOfWeek, vbUseSystem)
[a3] = "days " & nK
'years 24
'months 7
'Days 9
End Sub
[/vba]
что бы работать с ячейками A1 и A2, если даты в них сохранены в виде текста "12.03.1992" и т.д. Заранее спасибо.

Автор - Sashagor1982
Дата добавления - 04.02.2017 в 23:26
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!