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

Вход

Регистрация

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

 

= Мир MS Excel/Разность дат формата ## дней ## месяцев ## лет - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разность дат формата ## дней ## месяцев ## лет (Макросы/Sub)
Разность дат формата ## дней ## месяцев ## лет
WeRiX Дата: Понедельник, 26.01.2015, 17:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
Добрый день!
Подскажите как в vba рассчитать разницу между двумя датами и вывести результат в формате - ## дней, ## месяцев, ## лет.
Заранее спасибо!
 
Ответить
СообщениеДобрый день!
Подскажите как в vba рассчитать разницу между двумя датами и вывести результат в формате - ## дней, ## месяцев, ## лет.
Заранее спасибо!

Автор - WeRiX
Дата добавления - 26.01.2015 в 17:39
Pelena Дата: Понедельник, 26.01.2015, 17:47 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Формула не подойдёт?
http://www.excelworld.ru/board/excel/formulas/date_minus_date/3-1-0-8


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Формула не подойдёт?
http://www.excelworld.ru/board/excel/formulas/date_minus_date/3-1-0-8

Автор - Pelena
Дата добавления - 26.01.2015 в 17:47
_Boroda_ Дата: Понедельник, 26.01.2015, 18:00 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу или с сокращениями

Автор - _Boroda_
Дата добавления - 26.01.2015 в 18:00
WeRiX Дата: Понедельник, 26.01.2015, 18:40 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
Да в том то и дело, мне нужно в проект vba.
 
Ответить
СообщениеДа в том то и дело, мне нужно в проект vba.

Автор - WeRiX
Дата добавления - 26.01.2015 в 18:40
tsap Дата: Вторник, 27.01.2015, 01:44 | Сообщение № 5
Группа: Проверенные
Ранг: Участник
Сообщений: 60
Репутация: 6 ±
Замечаний: 0% ±

2013
Добрый день!
Надеюсь угадал с решением
[vba]
Код

Option Explicit

Function calculate_date_dif(date_from, date_to) As String
     Dim y As Integer
     Dim m As Integer
     Dim d As Integer

     'date_from = #1/1/2012#
     'date_to = #25/3/2012#

     d = DateDiff("d", date_from, date_to)

      y = d \ 365                    'kolvo let
     If y > 0 Then: m = (d \ 30) - (y * 12): Else: m = 0         'Esli <1 goda togda mesyac=0
     If d - (y * 365 + m * 30) < 0 Then                    'Korrektirovka na raznoe kolvo dneiv mesyacah
         m = m - 1                    '   --- korrektiruem mes
         d = d - (y * 365 + m * 30)                    '   --- vis4itivaem dni
     End If

calculate_date_dif = Format(d, "00 дней") & ", " & _
                     Format(m, "00 месяцев") & ", " & _
                     Format(y, "00 лет")
Debug.Print calculate_date_dif
End Function
[/vba]

Результат будет иметь вид:
Код
84 дней, 00 месяцев, 00 лет


 
Ответить
СообщениеДобрый день!
Надеюсь угадал с решением
[vba]
Код

Option Explicit

Function calculate_date_dif(date_from, date_to) As String
     Dim y As Integer
     Dim m As Integer
     Dim d As Integer

     'date_from = #1/1/2012#
     'date_to = #25/3/2012#

     d = DateDiff("d", date_from, date_to)

      y = d \ 365                    'kolvo let
     If y > 0 Then: m = (d \ 30) - (y * 12): Else: m = 0         'Esli <1 goda togda mesyac=0
     If d - (y * 365 + m * 30) < 0 Then                    'Korrektirovka na raznoe kolvo dneiv mesyacah
         m = m - 1                    '   --- korrektiruem mes
         d = d - (y * 365 + m * 30)                    '   --- vis4itivaem dni
     End If

calculate_date_dif = Format(d, "00 дней") & ", " & _
                     Format(m, "00 месяцев") & ", " & _
                     Format(y, "00 лет")
Debug.Print calculate_date_dif
End Function
[/vba]

Результат будет иметь вид:
Код
84 дней, 00 месяцев, 00 лет

Автор - tsap
Дата добавления - 27.01.2015 в 01:44
WeRiX Дата: Вторник, 27.01.2015, 07:23 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
К сожалению не так. Например, разница между датами 05.02.2014 и 04.01.2013 должна быть в виде 1 дня 1 месяца 1 года. У тебя совсем другая логика счета.
Но все равно спасибо, где-то и такое пригодится
 
Ответить
СообщениеК сожалению не так. Например, разница между датами 05.02.2014 и 04.01.2013 должна быть в виде 1 дня 1 месяца 1 года. У тебя совсем другая логика счета.
Но все равно спасибо, где-то и такое пригодится

Автор - WeRiX
Дата добавления - 27.01.2015 в 07:23
Michael_S Дата: Вторник, 27.01.2015, 07:36 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
как вариант


Сообщение отредактировал Michael_S - Вторник, 27.01.2015, 07:43
 
Ответить
Сообщениекак вариант

Автор - Michael_S
Дата добавления - 27.01.2015 в 07:36
Michael_S Дата: Вторник, 27.01.2015, 07:39 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
У тебя совсем другая логика счета.

У нас с незнакомыми людьми принято на "вы"


Сообщение отредактировал Michael_S - Вторник, 27.01.2015, 07:39
 
Ответить
Сообщение
У тебя совсем другая логика счета.

У нас с незнакомыми людьми принято на "вы"

Автор - Michael_S
Дата добавления - 27.01.2015 в 07:39
WeRiX Дата: Вторник, 27.01.2015, 18:48 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 44
Репутация: 4 ±
Замечаний: 0% ±

Excel 2013
Michael_S, конечно, Вы правы... терпеть не могу невеж, что абсолютно не мешает самому быть им же (:
И да, Ваш вариант тот что нужен.

Тему можно закрывать.

ЗЫ: Извиняюся...
 
Ответить
СообщениеMichael_S, конечно, Вы правы... терпеть не могу невеж, что абсолютно не мешает самому быть им же (:
И да, Ваш вариант тот что нужен.

Тему можно закрывать.

ЗЫ: Извиняюся...

Автор - WeRiX
Дата добавления - 27.01.2015 в 18:48
baaur Дата: Четверг, 27.10.2016, 08:42 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 70
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
как вариант


Добрый день,

Подскажите пожалуйста, куда в коде поставить +1, что бы результат был 1день, к примеру при разнице 27.10.16 - 27.10.16?

Заранее спасибо!
 
Ответить
Сообщение
как вариант


Добрый день,

Подскажите пожалуйста, куда в коде поставить +1, что бы результат был 1день, к примеру при разнице 27.10.16 - 27.10.16?

Заранее спасибо!

Автор - baaur
Дата добавления - 27.10.2016 в 08:42
Pelena Дата: Четверг, 27.10.2016, 08:53 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 19182
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Попробуйте в самом начале, после строки с Dim, написать
[vba]
Код
Дата_кон=Дата_кон+1
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПопробуйте в самом начале, после строки с Dim, написать
[vba]
Код
Дата_кон=Дата_кон+1
[/vba]

Автор - Pelena
Дата добавления - 27.10.2016 в 08:53
baaur Дата: Четверг, 27.10.2016, 08:56 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 70
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Pelena,

Спасибо большое! Да то что нужно. specool
 
Ответить
СообщениеPelena,

Спасибо большое! Да то что нужно. specool

Автор - baaur
Дата добавления - 27.10.2016 в 08:56
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Разность дат формата ## дней ## месяцев ## лет (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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