Универсальная формула перевода дат в годы, месяцы, недели...
Модератор: Naeel Maqsudov
...дни, часы, минуты секунды...
Возможно ли создать такую формулу?
То есть, например, вводятся 2 значения:
14.01.1946 23:48:51
и
12.12.2005 16:00:02
Можно ли в Экселе написать такую формулу (или несколько), чтобы введя две даты можно было на выходе (в разных ячейках) получить целое число: лет, месяцев, недель, дней, часов, минут, секунд?...
Возможно ли создать такую формулу?
То есть, например, вводятся 2 значения:
14.01.1946 23:48:51
и
12.12.2005 16:00:02
Можно ли в Экселе написать такую формулу (или несколько), чтобы введя две даты можно было на выходе (в разных ячейках) получить целое число: лет, месяцев, недель, дней, часов, минут, секунд?...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
=DATEDIF(B6;B5;B7)
Какое название соответствует DATEDIF в русифицированном офисе не помню.
Найдите у себя файл Funcs.xls и посмотрите там русское название.
Какое название соответствует DATEDIF в русифицированном офисе не помню.
Найдите у себя файл Funcs.xls и посмотрите там русское название.
Попробуйте вариант ...
http://avsha.narod.ru/DataTime.rar
Или то же самое, если не хотите скачивать:
$C$6 = 15.12.2005 00:00:00
$C$7 = 15.12.2005 10:15:15
$C$9=$C$7-$C$6
http://avsha.narod.ru/DataTime.rar
Или то же самое, если не хотите скачивать:
$C$6 = 15.12.2005 00:00:00
$C$7 = 15.12.2005 10:15:15
$C$9=$C$7-$C$6
Всего:
Лет $E$9 =ЦЕЛОЕ($C$9/365)
Дней $E$10=ЦЕЛОЕ($C$9)
Часов $E$11=ЦЕЛОЕ($C$9*24)
Минут $E$12=ЦЕЛОЕ($C$9*24*60)
Секунд $E$13=ЦЕЛОЕ($C$9*24*60*60)
В сумме:
Лет $F$9 =ЦЕЛОЕ($C$9/365)
Дней $F$10=$E$10-$F$9*365
Часов $F$11=$E$11-$F$9*365*24-$F$10*24
Минут $F$12=$E$12-$F$9*365*24*60-$F$10*24*60-$F$11*60
Секунд $F$13=$E$13-$F$9*365*24*60*60-$F$10*24*60*60-$F$11*60*60-$F$12*60
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Avsha, зачем, когда есть одна функция которая все это умеет, которая учтывает, что в некоторых годах бывает 366 дней, а также некоторые другие особенности? Например, правильно вычисляет разницу в месяцах.
Функции работы с датой и временем, приведенные в справке -
Вы наверно имели в виду функцию ДОЛЯГОДА - я у себя ее не нашел в функциях и поэтому привел вариант попроще,ВРЕМЗНАЧ
ВРЕМЯ
ГОД
ДАТА
ДАТАЗНАЧ
ДАТАМЕС
ДЕНЬ
ДЕНЬНЕД
ДНЕЙ360
ДОЛЯГОДА
КОНМЕСЯЦА
МЕСЯЦ
МИНУТЫ
РАБДЕНЬ
СЕГОДНЯ
СЕКУНДЫ
ТДАТА
ЧАС
ЧИСТРАБДНИ
Если необходимо, можно написать еще пользовательсую функцию на VBA с использованием DateDiff.ДОЛЯГОДА
Возвращает долю года, которую составляет количество дней между двумя датами.
Возврат функцией значения ошибки #ИМЯ? свидетельствует о необходимости установить библиотеку msowcf.dll.
ДОЛЯГОДА(нач_дата;кон_дата;базис)
Нач_дата - это дата, соответствующая начальной дате.
Кон_дата - это дата, соответствующая конечной дате.
Базис — это число от 0 до 4, которое определяет используемый способ вычисления дня.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Нет.
В оригинальном релизе есть функция DATEDIF.
Если офис русифицированный (или локализованный для другой страны), то среди его файлов есть Funcs.xls.
Этот файл показывает соответствие оригинальных и локализованных названий функций, а также содержит гиперссылки на соответствующие разделы справочной системы.
Черт... Щас пойду русский офис где нибудь поищу...
В оригинальном релизе есть функция DATEDIF.
Если офис русифицированный (или локализованный для другой страны), то среди его файлов есть Funcs.xls.
Этот файл показывает соответствие оригинальных и локализованных названий функций, а также содержит гиперссылки на соответствующие разделы справочной системы.
Черт... Щас пойду русский офис где нибудь поищу...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ага, нашел!
Функция называется РАЗНДАТ
Хм... Прикольно! В русском офисе по ней нет хелпа.
=Вот оригинальный
Функция называется РАЗНДАТ
Хм... Прикольно! В русском офисе по ней нет хелпа.
=Вот оригинальный
Calculates the number of days, months, or years between two dates. This function is provided for compatibility with Lotus 1-2-3.
Syntax
DATEDIF(start_date,end_date,unit)
Start_date is a date that represents the first, or starting, date of the period. Dates may be entered as text strings within quotation marks (for example, "2001/1/30"), as serial numbers (for example, 36921, which represents January 30, 2001, if you're using the 1900 date system), or as the results of other formulas or functions (for example, DATEVALUE("2001/1/30")). For more information about date serial numbers, see NOW.
End_date is a date that represents the last, or ending, date of the period.
Unit is the type of information you want returned.
Unit Returns
"Y" The number of complete years in the period.
"M" The number of complete months in the period.
"D" The number of days in the period.
"MD" The difference between the days in start_date and end_date. The months and years of the dates are ignored.
"YM" The difference between the months in start_date and end_date. The days and years of the dates are ignored.
"YD" The difference between the days of start_date and end_date. The years of the dates are ignored.
Remarks
Microsoft Excel stores dates as sequential serial numbers so that it can perform calculations on them. Excel stores January 1, 1900, as serial number 1 if your workbook uses the 1900 date system. If your workbook uses the 1904 date system, Excel stores January 1, 1904, as serial number 0 (January 2, 1904, is serial number 1). For example, in the 1900 date system, Excel stores January 1, 1998, as serial number 35796 because it is 35,795 days after January 1, 1900. Learn more about how Microsoft Excel stores dates and times.
Excel for Windows and Excel for the Macintosh use different date systems as their default. For more information, see NOW.
Examples
DATEDIF("2001/1/1","2003/1/1","Y") equals 2, or two complete years in the period.
DATEDIF("2001/6/1","2002/8/15","D") equals 440, or 440 days between June 1, 2001, and August 15, 2002.
DATEDIF("2001/6/1","2002/8/15","YD") equals 75, or 75 days between June 1 and August 15, ignoring the years of the dates.
DATEDIF("2001/6/1","2002/8/15","MD") equals 14, or the difference between 1 and 15 — the day of start_date and the day of end_date — ignoring the months and the years of the dates.
Naeel Maqsudov,
Справку то я нашел, Справка[F1]\Создание и проверка формул в книгах\Справка по функциям\Функции даты и времени\РАЗНДАТ
Но заодно и обнаружил что функция считает только дни, а часы, минуты, секунды - уже нет.
Вариант с DateDiff тоже ничего получается...
Справку то я нашел, Справка[F1]\Создание и проверка формул в книгах\Справка по функциям\Функции даты и времени\РАЗНДАТ
Но заодно и обнаружил что функция считает только дни, а часы, минуты, секунды - уже нет.
Вариант с DateDiff тоже ничего получается...
Код: Выделить всё
Public Function SubDateTime(DataTime_01 As Date, DataTime_02 As Date, Метод As String)
'Метод =
'yyyy Year
'q Quarter
'm Month
'y Day of year
'd Day
'w Weekday
'ww Week
'h Hour
'n Minute
's Second
SubDateTime = DateDiff(Метод, DataTime_01, DataTime_02, vbMonday, vbFirstJan1)
End Function
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
А что время?!
Время это проще всего!
Берем дробную часть арифметической разницы и из этого числа выделяем часы минуты и секунды стандартными функциями листа (ЧАС, МИНУТЫ, СЕКУНДЫ)
Время это проще всего!
Берем дробную часть арифметической разницы и из этого числа выделяем часы минуты и секунды стандартными функциями листа (ЧАС, МИНУТЫ, СЕКУНДЫ)