- •Глава 5. Встроенные функции 141
- •Глава 5. Встроенные функции
- •5.1. Правила использования функций
- •5.2. Математические функции
- •5.3. Логические функции
- •5.4. Статистические функции
- •5.5. Функции для работы с базой данных
- •5.6. Функции дат и времени
- •5.7. Инженерные функции
- •5.8. Функции ссылок и массивов
- •5.9. Финансовые функции
- •5.10. Другие функции
5.6. Функции дат и времени
Обзор функций дат и времени. Эти функции являются эффективным средством управления данными, содержащими значения дат и времени. С их помощью можно вычислять количество рабочих дней между заданными датами; вставлять в документ текущую дату и время; определять дату, отстоящую от текущей на заданное число рабочих дней, и т.д.
Дата сохраняется как целая часть числа (количество дней, начиная с 1-го января 1900 г.), а время сохраняется как дробная часть числа (доля от 24-часовых суток). Например, дата 1 января 2000 года будет храниться как число 36526 (именно столько дней прошло с 1-го января 1900 г.). А 6 часов 31-го января 1900 года сохраняется как 31.25 (здесь 0.25 – результат деления 6/24). Такое представление дат и времени позволяет производить любые вычисления с датами и временем (их можно складывать, вычитать и использовать в других вычислениях).
Функции дат и времени можно условно разделить на три группы: функции преобразования форматов; функции анализа дат и времени; функции для работы с интервалами дат.
Функции преобразования форматов. В эту категорию включены функции, преобразующие текстовый формат дат и времени в числовой, а также формирующие даты и время из отдельно заданных аргументов.
=ДАТАЗНАЧ(дата_как_текст) – преобразует дату из текстового формата в числовой. Например, функция =ДАТАЗНАЧ("5.06.2003") возвращает 37777 (столько дней прошло с 1.01.1900 до 5.06.2003 года).
=ВРЕМЗНАЧ(время_как_текст) – преобразует время из текстового формата в числовой. Например, функция =ВРЕМЗНАЧ("12:30") возвращает 0.520833 (12 часов – это 12/24 = 0.5, а 30 минут – это 30/60/24 = 0.020833; в сумме 0.520833).
=ДАТА(год; месяц; день) – возвращает дату, соответствующую заданным аргументам. Если ячейка имеет формат Числовой, дата будет представлена числом, отсчитанным от 1 января 1900 года. А если ячейка имеет формат Общий, результат форматируется как дата (например, функция =ДАТА(2003; 5; 9) в этом случае возвращает 5.09.03).
=ВРЕМЯ(часы; минуты; секунды) – возвращает время, соответствующее заданным аргументам. Например, функция =ВРЕМЯ(6; 30; 05) возвращает 6:30:05.
Функции анализа дат и времени. Эти функции служат для извлечения отдельных составляющих дат и времени (например, года, месяца, количества минут и т.д.). Их часто используют совместно с функциями СУММ и ЕСЛИ для условного суммирования данных. Например, если в ячейках D3:D15 находятся даты, а в ячейках E3:E15 – соответствующие платежи, то с помощью формулы массива {=СУММ(ЕСЛИ(МЕСЯЦ(D3:D15)=5;E3:E15;0))} можно просуммировать только майские платежи. Напомним, что ввод формул массива нужно заканчивать нажатием комбинации клавиш Shift+Ctrl+Enter.
Кроме функций извлечения составляющих дат и времени к категории функций анализа условно можно отнести функции СЕГОДНЯ и ТДАТА, возвращающие текущую дату и время. Рассмотрим основные функции анализа:
=ГОД(дата_в_числовом_формате) – возвращает год, соответствующий заданному аргументу. Аргумент этой функции и всех других функций, где используется дата_в_числовом_формате, можно задавать любым из трех способов:
в виде ссылки на ячейку с датой;
в виде числа, определяющего отстояние даты от 1.01.1900 года.
в виде текстовой строки, где дата заключена в кавычки (например, "5.10.2003").
=МЕСЯЦ(дата_в_числовом_формате) – возвращает номер месяца, соответствующего заданному аргументу. Например, если в ячейке D2 содержится дата 5.10.2003, то функция =МЕСЯЦ(D2) возвращает число 10.
=ДЕНЬ(дата_в_числовом_формате) – возвращает день месяца, соответствующий заданному аргументу. Для той же ячейки D2 функция =ДЕНЬ(D2) возвращает число 5.
=ДЕНЬНЕД(дата_в_числовом_формате; тип) – возвращает день недели, соответствующий заданным аргументам. Первый аргумент в данном случае не имеет никаких особенностей, а в качестве аргумента тип можно задавать одно из трех значений:
1 (или аргумент опущен) – дни нумеруются от 1 (воскресенье) до 7 (суббота);
2 – дни нумеруются от 1 (понедельник) до 7 (воскресенье);
3 – дни нумеруются от 0 (понедельник) до 6 (воскресенье).
Например, если использовать данные той же ячейки D2, то функция =ДЕНЬНЕД(D2; 2) возвращает число 7. Поскольку задан тип 2, то это – воскресенье.
=ЧАС(время_в_числовом_формате) – возвращает час (от 0 до 23), соответствующий заданному аргументу. Аргумент этой функции и других функций, где используется время_в_числовом_формате, можно задавать любым из трех способов:
в виде ссылки на ячейку со значением времени;
в виде числа, определяющего время (например, 12/24 = 0.5 – это 12 часов).
в виде текстовой строки, где время заключено в кавычки (например, "7:30:15").
=МИНУТЫ(время_в_числовом_формате) – возвращает минуты, соответствующие заданному аргументу. Например, если в ячейке F5 содержится значение времени 11:30:20, то функция =МИНУТЫ(F5) возвращает число 30.
=СЕКУНДЫ(время_в_числовом_формате) – возвращает секунды, соответствующие заданному аргументу. Для той же ячейки F5 функция =СЕКУНДЫ(F5) возвращает 20.
=СЕГОДНЯ() – возвращает текущую дату. Эта функция используется без аргументов, но скобки обязательны. Другая ее особенность заключается в том, что это динамическая функция. Если открывать документ Excel с функцией СЕГОДНЯ в разные дни, то эта функция будет возвращать разные даты.
Кроме отображения текущей даты, функция СЕГОДНЯ может использоваться в вычислениях. Например, если в ячейке D5 содержится функция СЕГОДНЯ, в ячейке D6 – число 10, а в ячейке D7 – формула =D5+D6, то результатом вычисления по этой формуле 15-го октября 2003 года будет 25.10.03.
=ТДАТА() – возвращает текущую дату и текущее время. Эта функция используется без аргументов, но скобки обязательны. Как и функция СЕГОДНЯ, ТДАТА – динамическая функция. Возвращаемое ею время обновляется при каждом вводе новых данных. Кроме того, для приведения в соответствие времени, возвращаемого этой функцией, можно нажать клавишу F9.
Как и функция СЕГОДНЯ, ТДАТА может использоваться в вычислениях. Например, если в ячейке D5 содержится функция ТДАТА, в ячейке D6 – число 10.257, а в ячейке D7 – формула =D5+D6, то результатом вычисления по этой формуле 15-го октября 2003 года в 12 часов 15 минут будет 25.10.03 18:15.
Функции для работы с интервалами дат. Эти функции используются для выполнения операций с интервалами дат без учета суббот, воскресений и праздничных дней. Наиболее распространенными функциями этого типа являются:
=ЧИСТРАБДНИ(нач_дата; кон_дата; праздники) – возвращает количество рабочих дней между двумя заданными датами: нач_дата и кон_дата. Эти аргументы можно задавать любым из трех способов:
в виде ссылок на ячейки с датами;
в виде чисел, определяющих отстояние дат от 1.01.1900 года.
в виде текстовых строк, где дата заключена в кавычки (например, "5.10.2003").
Необязательный аргумент праздники задается в виде ссылки на массив ячеек с праздничными датами. Например, если в ячейках F1:F3 содержатся даты: 14.06.03 (суббота), 18.06.03 (среда) и 16.06.03 (праздник), то функция =ЧИСТРАБДНИ(F1; F2; F3) вернет значение 2. То есть между 14-м и 18-м июня два рабочих дня (17.06 и 18.06).
=РАБДЕНЬ(нач_дата; количество_дней; праздники) – возвращает дату, отстоящую на заданное количество рабочих дней вперед или назад от нач_даты. Дата возвращается в виде числа, определяющего ее отстояние от 1.01.1900 года. Для получения обычной даты нужно отформатировать ячейку с результатом вычислений (см. Главу 3, п. 3.2).
Аргумент нач_дата задается в виде ссылки на ячейку или в виде числа, определяющего отстояние даты от 1.01.1900 года. Аргумент праздники ничем не отличается от аналогичного аргумента функции ЧИСТРАБДНИ. А аргумент количество_дней – это положительное или отрицательное число, определяющее отстояние искомой даты от заданной нач_даты. Положительное число задает отстояние даты вперед, а отрицательное – назад.
