The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Формулы в Microsoft Excel 2010 ( PDFDrive )

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by sergiu.sulima, 2022-05-22 12:49:43

Формулы в Microsoft Excel 2010 ( PDFDrive )

Формулы в Microsoft Excel 2010 ( PDFDrive )

Глава 5. Работа с текстом 155

Сложнее ситуация обстоит со списками отчеств людей, так как эта информация мо­
жет быть введена не во все ячейки. Данная формула возвращает отчество человека (если
таковое имеется), в противном случае формула не вернет ничего.
=ЕСЛИ(ДЛСТР(А1) -ДЛСТР(ПОДСТАВИТЬ(А1;" " ; "") ) >1;

ПСТР(А 1 ; ИСКАТЬ(" " ; А 1 ) + 1 ; ИСКАТЬ( " " ; А 1 ; ИСКАТЬ(" ";
А1) + 1 ) - (ИСКАТЬ(" " ; А 1 ) + 1 ) ) ; "")

И наконец, следующая формула возвращает фамилию:

=ЕСЛИОШИБКА(ПРАВСИМВ ( A I ; LEN (А1) -ИСКАТЬ ( "* " ; ПОДСТАВИТЬ (А1 ;
.. .. . .. *.. . ПРАВСИМВ (А1) -ДЛСТР (ПОДСТАВИТЬ ( А1; " " ; " " ) ) ) ) ) ; "")

Однако существует формула, которая позволяет более простым способом извлечь из
списка отчества людей. Следующая формула может быть весьма полезна, если изначаль­
но использовать две другие формулы для получения имени и фамилии. Необходимо по­
местить имя человека в ячейку В1, а фамилию — в ячейку D1.

=ЕСЛИ(ДЛСТР(B1&D1)+2 >=ДЛСТР(А1) ;" " ;ПСТР(А1; ДЛСТР(В1)+2;
ДЛСТР(А1)-ДЛСТР(B1&D1)- 2 ) )

Как видно на рис. 5.6, эти формулы работают достаточно хорошо. Тем не менее неко­
торые проблемы все же существуют, особенно с именами, которые содержат четыре
слова. Но, как отмечается ниже, такую ситуацию можно исправить вручную.

© Перекрестная ссылка

Для получения более подробной информации о создании приведенных
в этом разделе формул обратитесь к главе 20, в которой рассматриваются
мегаформулы.

Рис. 5.6. На этом рабочем листе используются формулы извлечения имен, отчеств и фа­
милий людей, содержащиеся в списке столбца А

Удаление титулов и званий из имен

Приведенная далее формула позволяет избежать двух часто употребляемых обраще­
ний: Г о с п . и Г - ж а . . Например, если ячейка А1 содержит текст Г о с п . С е р г е й
Новиков, следующая формула возвращает С е р г е й Новиков:
=ЕСЛИ(ИЛИ (ЛЕВСИМВ (А 1 ; 4) = "Госп . " ; ЛЕВСИМВ ( А1 ; 4) = "Г-жа" ) ;
ПРАВСИМВ (А1; ДЛСТР (А1) -НАЙТИ(" ";А1) ) ;А1)

Разделение текстовых строк без использования формул

Во многих случаях можно отказаться от применения формул и разобрать строки на
составляющие их элементы с помощью команды Данные1^Работа с данными>=>Текст по
столбцам. Будет вызван мастер текстов, содержащий несколько последовательных
окон (одно из них показано ниже). Мастер позволит по шагам пройти процесс преобра­

156 Часть II. Использование функций в формулах

зования одного столбца данных в несколько. В общем случае в первом окне мастера
нужно установить переключатель С разделителями и в качестве разделителя во втором
окне выбрать символ пробела.

Подсчет количества слов в ячейке

Следующая формула возвращает количество слов в ячейке А1:
=ДЛСТР(СЖПРОБЕЛЫ(А 1 ) ) -ДЛСТР(ПОДСТАВИТЬ(
СЖПРОБЕЛЫ(А1) ;" м; "") )+1

В этой формуле используется функция СЖПРОБЕЛЫ, которая удаляет лишние пробе­
лы. После этого с помощью функции ПОДСТАВИТЬ в памяти создается новая строка без
пробелов. Затем длина созданной строки вычитается из длины исходной строки, в ре­
зультате чего получается количество пробелов. Это значение увеличивается на единицу
и таким образом подсчитывается количество слов.

Имейте в виду, что приведенная выше формула возвращает значение 1, если заданная
ячейка не содержит данных. Решить эту проблему можно, усовершенствовав формулу
следующим образом:
=ЕСЛИ(ДЛСТР(А1)=0;0 ; ДЛСТР(СЖПРОБЕЛЫ(А1)) -
ДЛСТР (ПОДСТАВИТЬ (СЖПРОБЕЛЫ (А1) м; "") )+1) .

Перекрестная ссылка

Excel предлагает достаточное количество функций, предназначенных для
работы с текстом. Однако вы можете столкнуться с такой задачей, при ре­
шении которой невозможно будет использовать ни одну из существующих
функций. В таком случае вам предоставляется прекрасная возможность
создать собственную функцию для заданного рабочего листа с использова­
нием встроенного языка программирования VBA, как описано в главе 25.

Глава

Дата и время

Вэтой главе...

♦ Принципы управления датами и временем в Excel
♦ Функции управления датами
♦ Функции управления временем

Начинающие пользователи Excel при использовании данных даты и времени часто
сталкиваются с различными проблемами. Чаще всего это связано с непониманием того,
каким образом Excel обрабатывает данный тип информации. В настоящей главе содер­
жатся сведения, необходимые для создания “жизнеспособных” формул, оперирующих
датами и временем.

Примечание

Примеры, которые будут использоваться в этой главе, соответствуют фор­
мату даты, принятому в русифицированном приложении Excel: д д . м м . г г г г
или д д / м м / г г г г . Например, дата 1.03.1952 или 01/03/1952 означает 1 мар­
та 1952 года. Имейте в виду, что это не 3 января 1952 года, как принято в ре­
гиональном формате США.

Принципы управления датами
ивременем в Excel

В этом разделе мы кратко рассмотрим принципы управления информацией, представ­
ляющей собой дату и время, в приложении Excel. В разделе содержится обзор основных
принципов работы с порядковыми значениями даты и времени и предлагаются рекоменда­
ции по вводу и приведению к соответствующему формату этого типа информации.

Перекрестная ссылка

Информация, связанная с датами, представлена и в других главах книги.
К примеру, в главе 7 описаны примеры расчета значений ячеек, которым на­
значен формат даты, а в главе 25 — некоторые полезные функции управле­
ния датами, написанные на VBA.

158 Часть II. Использование функций в формулах

Представление даты как порядкового числа

Для Excel дата — это порядковое число, которое представляет собой количество дней,
прошедших с 0 января 1900 года. Это означает, что порядковое число 1 соответствует
дате 1 января 1900 года; число 2 — дате 2 января 1900 года и т.д. Существование такой
системы позволяет использовать формулы при работе с датами. Например, она позволяет
создать формулу, которая будет вычислять количество дней между двумя датами.

Безусловно, виртуальная дата 0 января 1900 года может вызвать недоумение. Конеч­
но, она не является датой сотворения мира, а просто означает определенное мировое
время. Далее мы рассмотрим это понятие более подробно.

Чтобы представить числовое значение в виде даты, к ячейке, содержащей этот номер,
необходимо применить формат Д ата. Для этого откройте диалоговое окно Формат
ячеек и щелкните на вкладке Число, а затем выберите необходимый формат.

Примечание

Excel 2000 и более поздние версии этого приложения поддерживают даты в
диапазоне от 1 января 1900 года до 31 декабря 9999 года (порядковое число
этой даты 2958465). Диапазон дат, доступный в более ранних версиях при­
ложения, значительно меньше. Здесь используются даты с 1 января 1900
года и до 31 декабря 2078 года (порядковое число 65380).

Выберите систему дат: 1900 или 1904

Excel поддерживает две системы дат: система дат, начиная с 1900 или 1904 года.
Какую из них предпочесть в рабочей книге, вы определяете самостоятельно, в зависи­
мости от того, какая дата служит основанием для других дат. В системе дат, начинаю­
щейся с 1900 года, день 1 января 1900 года имеет порядковое число 1. В системе дат
1904 года начало отсчета — 1 января 1904 года. По умолчанию для систем Windows при­
ложение Excel использует систему дат, начинающую отсчет с 1 января 1900 года, а для
систем Macintosh — дату, начиная с 1904 года. Тем не менее в Excel для Windows с це­
лью обеспечения совместимости с файлами Macintosh тоже поддерживается система
дат 1904. Систему дат можно изменить, используя диалоговое окно параметров про­
граммы. Чтобы открыть его, выберите команду Файл^Параметры Excel, а затем щелк­
ните на вкладке Дополнительно. В зависимости от своих намерений установите или
снимите в разделе При пересчете этой книги флажок Использовать систему дат 1904.
Имейте в виду, что система дат не может изменяться, если в компьютере используется
версия Excel для Macintosh.

Рекомендуем использовать систему дат, установленную по умолчанию (начиная с
1900 года). Будьте особенно осторожны, когда применяете две различные системы дат
в связанных рабочих книгах. Предположим, что Книга1 использует систему дат, начи­
ная с 1904 года, и содержит в ячейке А1 дату 1 5 / 1 / 1 9 9 9 , а Книга2, наоборот, исполь­
зует систему дат с 1900 года и содержит ссылку на ячейку a i к н и г и книга 1. В книге
Книга2 эта дата будет отображаться как 1 4 / 1 / 1 9 9 5 . Таким образом, обе рабочие книги
используют один и тот же порядковое число дня (34 713), но в разных книгах оно ин­
терпретируется по-разному.

Существует одно преимущество использования системы дат 1904. Эта система по­
зволяет отображать отрицательные значения времени. Другими словами, при исполь­
зовании системы дат 1900 результат вычитания 4 : о о - 5 : з о , не может быть отображен.
При использовании системы дат 1904 результат отображается как отрицательное вре­
мя - 1 : зо (т.е. разница составляет один час и 30 минут).

Глава 6. Дата и время 159

Ввод даты

Конечно, можно вводить дату как порядковое число, но, как правило, дата вводится
с использованием одного из нескольких поддерживаемых в Excel форматов даты. После
ввода даты Excel автоматически преобразует ее в соответствующее порядковое число,
которое в дальнейшем будет использоваться для вычислений. Затем к ячейке применяет­
ся заданный по умолчанию формат даты, и на экране отображается более привычный
формат даты, нежели загадочное порядковое число.

Например, если необходимо ввести дату 3 июня 2010 года, то это можно сделать
весьма просто— 3 Июнь, 2 0 1 0 , используя данный формат или любой другой из
имеющихся форматов даты. Excel преобразует введенную информацию и сохранит ее
как числовое значение 3 9 2 5 1 — порядковое число, соответствующее этой дате. После
этого Excel применит формат даты, заданный по умолчанию, поэтому содержимое ячей­
ки может быть отображено в представлении, несколько отличном от введенного.

Примечание

В зависимости от установленных региональных параметров операционной
системы, дата, введенная в формате з и ю нь , 2 0 1 0 , может интерпретиро­
ваться как текстовая строка. В таком случае нужно ввести дату, как опреде­
лено в окне региональных параметров Windows.

Обратите внимание, что при активизации ячейки, содержащей дату, в строке формул
отображается ее содержимое. Оно будет представлено в заданном по умолчанию форма­
те, который соответствует сокращенному виду даты, принятому в системе. Имейте в ви­
ду, что строка формул не отображает порядковое число даты. Чтобы отобразить поряд­
ковое число даты, примените к ячейке числовой формат.

Совет

Чтобы изменить заданный по умолчанию формат даты, необходимо изме­
нить региональные параметры операционной системы. Для этого в систем­
ном меню Пуск операционной системы Windows 7 выберите команду Панель
управления^Язык и региональные стандарты и выберите в соответствующих
раскрывающихся списках краткий и полный форматы дат. В Excel по умол­
чанию применяется краткий формат даты.

В табл. 6.1 приведены образцы форматов даты, которые поддерживает Excel (исполь­
зуемые в региональных параметрах для России и Украины). Однако они могут отличаться,
если в компьютере были установлены параметры другого региона.

160 Часть II. Использование функций в формулах

Введенные Воспринимается в Excel Окончание табл. 6.1
данные (настройка для России и Украины)
Что отображает Excel
3 Июн 3 июня текущего года
3 Июнь 3 июня текущего года 03.июн
3/6 3 июня текущего года 03.июн
3-6 3 июня текущего года 03.июн
3 -июн-2010 3 июня 2010 года 03.июн
2010/6/3 3 июня 2010 года 03.07.2010
Короткая дата Windows

Рассматривая примеры, приведенные в этой таблице, можно сделать вывод, что Excel
обладает достаточно широкими возможностями преобразования введенных дат, однако
они не вполне совершенны. Например, программа не признает в качестве даты следую­
щую введенную информацию:

• 1 июня 2010;

• Июн-1 2010;

• Июн-1/2010.

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

Существует еще один недостаток. Если введенная дата находится вне поддерживаемого
диапазона дат, Excel также интерпретирует ее как текст. Если порядковое число, находя­
щееся за пределами доступных для даты числовых значений, попытаться привести к фор­
мату даты, вместо значения будет отображаться ряд знаков “решетки” (#########).

Поиск даты

В рабочем листе, в котором используется довольно много дат, может возникнуть
необходимость найти определенную дату. Для этого воспользуйтесь диалоговым окном
Найти и заменить Excel, которое можно открыть, выбрав команду Главная^Редактиро-
ва н и е ^Н а й ти и вы делить1^ Найти или нажав ком бинацию клавиш <C trl+F>. И мейте в в и­
ду, что Excel достаточно требовательна к точности ввода искомой информации. Вам
придется ввести полный четырехразрядный год даты в поле Найти диалогового окна
поиска данных. Формат даты должен соответствовать краткому представлению даты,
принятому в системе. Это представление можно увидеть в строке формул.

Представление времени как порядкового числа

В Excel в качестве времени применяется дробная часть порядкового числа, обозна­
чающего дату. Другими словами, Excel считает сутки единицей, а все величины меньше
суток — соответствующей частью единицы. Например, порядковое число даты 18 июня
2010 года равно 4 0 34 7, а полдень того же дня имеет значение 4 034 7 . 5 .

Порядковое число одной минуты эквивалентно приблизительно 0 , 0 0 0 6 9 4 4 4 . Фор­
мула, приведенная ниже, вычисляет этот номер следующим образом: 24 часа умножается
на 60 минут, а затем 1 делится на полученный результат. Таким образом, в знаменателе
получается количество минут в одном дне (1440).

=1/ (24*60)

Глава 6. Дата и время 161

Тем же способом в Excel определяется порядковое число одной секунды— прибли­
зительно 0 , 0 0 0 0 1 1 5 7 . Для этого 1 делится на 24 часа, умноженные на 60 минут и 60
секунд. В этом случае знаменатель содержит количество секунд в одном дне (86400).

=1/(24*60*60)

Самая маленькая единица измерения времени в приложении Excel — одна тысячная
доля секунды (миллисекунда). Порядковое число приведенного ниже значения представ­
ляет время 2 3 : 5 9 : 5 9 , 9 9 9 , или без одной тысячной секунды полночь.

0,99999999

В табл. 6.2 представлены различные значения времени и соответствующие им поряд­
ковые числа, по которым Excel распознает это время.

Таблица 6.2. Время суток и преобразование его в порядковое число

Время суток Порядковое число времени

12:00:00 (полночь) 0,00000000
1:30:00 0,06250000
3:00:00 0,12500000
4:30:00 0,18750000
6:00:00 0,25000000
7:30:00 0,31250000
9:00:00 0,37500000
10:30:00 0,43750000
12:00:00 (полдень) 0,50000000
13:30:00 0,56250000
15:00:00 0,62500000
16:30:00 0,68750000
16:00:00 0,75000000
19:30:00 0,81250000
21:00:00 0,87500000
22:30:00 0,93750000

Ввод времени

Как и в случае с датами, нет необходимости вводить порядковое число времени. Доста­
точно ввести в ячейку время в любом из форматов, поддерживаемых в Excel. В табл. 6.3
приведены некоторые примеры записей времени, поддерживаемых в Excel.

Таблица 6.3. Преобразование введенного времени в формат Excel

Введенные данные Как Excel интерпретирует это время Что отображает Excel

11:30:00 11:30 11:30:00

1 1 : 3 0 am 11:30 11:30
1 : 3 0 pm 13:30 13:30
11 11:00 11:00

Поскольку приведенные выше примеры времени не связаны ни с каким определен­
ным днем, Excel по умолчанию использует порядковое число 0, соответствующее дате 0
января 1900 года, которая, по своей сути, не является датой.

162 Часть II. Использование функций в формулах

Примечание
При использовании системы дат, начинающейся с 1904 года, временные
значения без значения даты отсчитываются от первого января 1904 года.

Все приведенные ниже примеры основываются на системе дат, начинаю­
щейся с 1900 года.

Чтобы объединить дату и время, используйте совместный формат даты и времени,
который состоит из формата даты, пробела и формата времени. Например, если в ячейку
ввести текст 18 ию нь, 2010 1 1 :3 0 , приложение Excel вычислит порядковое число
3 9 2 5 1 , 4 7 9 1 6 6 6 6 6 7 и отобразит его в доступном формате даты и времени.
18.06.2010 11:30:00

В некоторых случаях, когда вводится время, превышающее 24 часа, связанная с ним
дата соответственно увеличивается. Например, если ввести в ячейку время 25:00:00, Ex­
cel увеличит ту часть, которая относится ко дню (поскольку время превышает 24 часа),
и отобразит введенное значение следующим образом:

0 1 . 01.2000 1 : 00:00

То же самое происходит, если ввести одновременно и дату, и время, превышающее
24 часа. Введенная дата при отображении будет откорректирована. Например, при вводе
в ячейку 0 1 . 0 9 . 2 0 1 0 2 5 : 0 0 : 0 0 на экране отображается следующая информация:
02.09.2010 1:00:00

При вводе только времени без соответствующей даты максимальное время, которое
можно ввести в ячейку равно 9 9 9 9 : 5 9 : 5 9 , т.е. менее 10000 часов. В этом случае Excel
добавляет соответствующее количество дней, и на экране отображается полученная дата.
Если же ввести время, превышающее предел 10000 часов, то оно будет представлено как
простая текстовая строка.

Форматирование значений даты и времени

Работая с ячейками, содержащими любую дату и время, вы имеете прекрасную воз­
можность форматировать их так, как это необходимо. Например, можно установить та­
кой формат ячейки, чтобы в ней отображалась только определенная часть даты или вре­
мени или только заданные части времени и даты одновременно.

Для форматирования ячейки с датой и временем необходимо выделить ячейку и
щелкнуть во вкладке Главная на раскрывающемся списке числовых форматов (рис. 6.1).
Этот список содержит два формата даты и один формат времени.

® ^П°ри,встоздании формул со ссылками на ячейку, содержимое которой пред­

ставляет дату или время, Excel автоматически преобразует результат вы­
полнения формул в формат даты или времени. В некоторых случаях это мо­
жет быть весьма кстати, в других же создает определенные неудобства
и даже раздражает. К сожалению, Excel не позволяет отключить автомати­
ческое форматирование ячейки. Тем не менее в подобных случаях можно
воспользоваться специальной комбинацией клавиш, чтобы отменить фор­
матирование всех чисел ячейки и вернуться к формату Общий, заданному по
умолчанию. Для этого достаточно выделить ячейку и нажать комбинацию
клавиш <Ctrl+Shift+~>.

Глава 6. Дата и время 163

Рис. 6.1. Раскрывающийся список числовых форматов используется для задания способа
отображения даты и времени

Иногда можно столкнуться с тем, что ни один из встроенных форматов не подходит
для нужного представления даты и времени. Не отчаивайтесь — Excel предоставит вам
прекрасную возможность создать пользовательский числовой формат. Выберите в спи­
ске пункт Другие числовые форматы (см. рис. 6.1) и введите определение пользова­
тельского формата в поле Тип. (Для получения дополнительной информации о создании
пользовательских числовых форматов см. приложение Б).

Совет

Следующий пользовательский формат данных особенно полезен для ото­
бражения времени:

[ ч ] :м м :сс

Заключите часы в квадратные скобки, чтобы иметь возможность отображать
часы за пределами 24. Использовать этот способ весьма удобно при добав­
лении более 24 часов. Соответствующий пример рассмотрен далее.

Проблемы, связанные с датами

Несмотря на всю эффективность форматов дат, в Excel все же иногда возникают про­
блемы при работе с датами. Многие из них уходят в прошлое. Excel была разработана
много лет назад, еще раньше, чем так называемая “проблема 2000 года” впервые потряс­

164 Часть II. Использование функций в формулах

ла мир. Но, как уже отмечалось, во многом разработчики Excel “отталкивались” от
Lotus 1-2-3 с ее ограниченными возможностями управления датами и временем. Поэтому
все самые серьезные технические дефекты были непреднамеренно перенесены в Excel.
Кроме того, версии самой Excel не единообразно интерпретируют записи дат с годом из
двух цифр. И наконец, то, как Excel понимает запись даты в ячейке, напрямую зависит от
региональных параметров, установленных в Windows.

Безусловно, если бы Excel полностью разрабатывалась в настоящее время, то она бы­
ла бы гораздо совершеннее в отношении управления датами. Но, к сожалению, пока
приходится работать с программным продуктом, который в этом вопросе оставляет же­
лать лучшего.

Ошибка високосного года
Високосный год, который наступает через каждые четыре года, имеет один дополни­

тельный день — 29 февраля. Несмотря на то что 1900 год не был таковым, Excel воспри­
нимает его как високосный. Другими словами, если ввести в ячейку 2 9 . 0 2 . 1 9 0 0 , Excel
не отобразит сообщение об ошибке, а интерпретирует это как значение даты, соответст­
вующее 60-му дню с начала отсчета (порядковое число 60):
29.2.1990

Однако если ввести другую недопустимую дату 2 9 . 0 2 . 1 9 0 1 , Excel отобразит сооб­
щение об ошибке. Приложение не преобразует эту запись в дату, а, скорее, воспримет ее
как текстовую строку:
29.02.1901

Возникает вопрос: как программный продукт, который ежедневно используют мил­
лионы людей, может содержать такую очевидную ошибку? Ответ кроется в истории его
создания. Исходная версия Lotus 1-2-3, на которой базировалось приложение Excel, со­
держала дефект, по причине которого 1900 год рассматривался как високосный. Разра­
ботчики приложения Excel знали об этой ошибке и позднее, при выпуске приложения,
специально перенесли этот дефект, чтобы обеспечить его совместимость с рабочими
листами файлов Lotus.

Но почему же эта ошибка до сих пор существует в более поздних версиях Excel?
Компания Microsoft утверждает, что проблемы, которые могут возникнуть при исправ­
лении этой ошибки, значительно перевешивают преимущества исправления. Устранение
этой ошибки привело бы в беспорядок сотни тысяч существующих рабочих книг. Кроме
того, исправление указанной проблемы сказалось бы на совместимости самой Excel с
другими программами, использующими дату. Именно поэтому данная ошибка влечет за
собой гораздо меньше проблем, чем ее исправление. К тому же, большинство пользова­
телей не используют даты, предшествующие 1 марта 1900 года.

Использование дат до 1900 года

Безусловно, мир начал свое существование не с 1 января 1900 года. Пользователи Excel,
которые работают с исторической информацией, часто используют даты до 1 января 1900
года. Но, к сожалению, единственный способ работы с такими датами в общепринятых
форматах — это ввести их в ячейку как текстовую информацию. Например, если ввести в
текстовую ячейку следующую строку, Excel воспримет ее без сообщения об ошибке:
4 июль, 1776

Глава 6. Дата и время 165

Совет

Если планируете сортировать старые даты, введенные как текст, или хотите
избавиться от проблем с форматами, применяйте даты в формате UTC
(Universal Time Coordinated — универсальное скоординированное время по
Гринвичу). В формате UTC (стандарт ISO 8601) дата записывается так:
г г г г - м м - д д , например, 1 7 7 6 - 0 7 - 2 4 . Это стандартный международный
формат даты и времени, используемый в авиационной и морской навига­
ции. Его основное преимущество состоит в том, что он правильно считыва­
ется, обрабатывается и сортируется практически в любой системе (в том
числе, в Excel) и при любых параметрах региональных форматов по той при­
чине, что в нем все разряды по старшинству расположены слева направо.
Для сравнения: в русском формате даты (например, 2 4 . 7 . 1 7 7 6 ) год (старший
разряд) расположен правее дня (младшего разряда). К сожалению, среди
пользователей формат UTC мало популярен (как в США, так и в России), по­
тому что для них он непривычный и по этой причине плохо воспринимается
визуально.

Однако датами, принимаемыми в виде текста, уже нельзя манипулировать как номи­
нальными, измеряемыми в единицах времени. Эти даты нельзя сортировать, фильтровать
и форматировать, изменяя числовой формат, как это принято в Excel. Нельзя определить
день недели, на который приходится заданная дата, а также вычислить дату, которая сле­
дует семью днями позже.

Перекрестная ссылка

В главе 25 вашему вниманию будет представлено несколько пользовательских
функций VBA, позволяющих работать с датами от 100-го до 9999-го года.

Ввод противоречивых дат

Будьте осторожны при вводе дат, использующих для отображения года два разряда.
В этом случае Excel использует ряд правил, определяющих, какое столетие необходимо ис­
пользовать. Данные правила зависят от версии Excel, которая установлена в компьютере.

В Excel 7 годы, обозначаемые двумя числами в диапазоне между 00 и 29, интерпре­
тируются как принадлежащие к XXI столетию, а даты между 30 и 99 — как даты XX
столетия. Например, если ввести в ячейку запись 5 .1 2 .2 8, то Excel интерпретирует ее
как 5 декабря 2028 года. Но если ввести дату 5 . 1 2 . 3 0 , Excel воспримет ее как 5 декабря
1930 года. В Excel 2000 или более поздней версии, работающей под управлением Win­
dows 98 и выше, в качестве граничного года, заданного по умолчанию, используется
2029 год. В то же время вы можете самостоятельно установить граничный год с помо­
щью окна региональных стандартов Windows.

Совет

Чтобы избежать всякого рода неожиданностей при работе с датами, просто
введите год полностью, используя все четыре цифры.

Функции управления датами

Excel предлагает не так много функций, предназначенных для работы с датой. Эти
функции представлены в раскрывающемся списке Формулы ^Библиотека функций1^
Дата и время.

166 Часть II. Использование функций в формулах

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

Таблица 6.4. Функции, связанные с датой

Функция Описание функции

дата Принимает три аргумента (год, месяц и день) и возвращает порядковое
число даты
датазнач Принимает дату в текстовом формате и возвращает порядковое число даты
день
Преобразует дату в день месяца (число от 1до 31)
ДНЕЙ360
Вычисляет количество дней между двумя датами на основе 360-дневного
датамес года (двенадцать месяцев по 30 дней)
Возвращает порядковое число даты, отстоящей на заданное количество
конмесяца месяцев вперед или назад от заданной
Возвращает порядковое число последнего дня месяца, отстоящего вперед
месяц или назад на заданное количество месяцев
Возвращает номер месяца (число в диапазоне от 1 до 12), соответствую­
чистрабдни щий введенному порядковому числу даты
тдата Возвращает количество рабочих дней, расположенных между двумя датами
сегодня
деньнед Возвращает порядковое число текущих даты и времени
номнедели
рабдень Возвращает порядковое число текущей даты

год Преобразует порядковое число даты в номер дня недели (число от 1 до 7)

долягода Возвращает номер недели в году

Возвращает порядковое число даты, отстоящей вперед или назад на за­
данное количество рабочих дней
Преобразует порядковое число даты в год (целое число в диапазоне от
1900 до 9999)
Возвращает долю года, которая составляет количество дней между началь­
ной и конечной датами

Отображение текущей даты

Функция, приведенная ниже, отображает в ячейке текущую дату (учитывайте, что ес­
ли установлен текстовый или общий формат ячейки, будет отображено порядковое число
сегодняшней даты).
=СЕГОДНЯ()

Можно отобразить не только текущую дату, но и объединить ее с Любым текстом.
Например, следующая формула будет выводить на экран такой текст: С е г о д н я
понедельник, 9 Апрель, 2010.
= "Сегодня "& ТЕКСТ(СЕГОДНЯ( ) ; "д ддд, д ММММ, г г г г " )

Помните, что результат функции СЕГОДНЯ изменяется каждый раз при расчете рабо­
чего листа. Например, если ввести в ячейку рабочего листа любую из рассмотренных
формул, они будут отображать текущую дату. Но откройте этот же рабочий лист на сле­
дующий день, и вы увидите, что формулы отображают совсем другую текущую дату.

Глава 6. Дата и время 167

Совет

Чтобы ввести в ячейку штамп даты (значение даты, которое не будет изме­
няться каждый последующий день), нажмите клавиши <Ctrl+Shift+; (точка
с запятой)>. Текущая дата будет введена в ячейку в текстовом формате без
использования формулы, поэтому она останется неизменной.

Отображение произвольных да т

Как уже отмечалось, дату можно добавить в ячейку, непосредственно введя ее в лю­
бом формате, поддерживаемом в приложении Excel. Дату также можно создать; для это­
го воспользуйтесь функцией ДАТА. Эта функция использует три аргумента: год, месяц
и день. Например, приведенная ниже формула возвращает дату, состоящую из года, взя­
того из ячейки А1, месяца, взятого из ячейки В1, и дня — из ячейки С1.
=ДАТА(А1;В1;С1)

Примечание

Обратите внимание, что функция дата принимает также недопустимые ар­
гументы и приводит результат в соответствие ожидаемому. Например, сле­
дующая формула использует число 13 как аргумент месяца и возвращает 1
Январь, 2011. Аргумент месяца автоматически преобразуется в первый
месяц следующего года.
=ДАТА( 2 0 1 0 ; 1 3 ;1)

Достаточно часто в функции ДАТА в качестве аргументов используются другие функ­
ции. Например, в приведенной ниже формуле функции ГОД и СЕГОДНЯ, используемые
как аргументы, возвращают День Независимости США (4 Июля) текущего года.
=ДАТА(ГОД(СЕГОДНЯ( ) ) ; 7 ; 4 )

Функция ДАТАЗНАЧ преобразует текстовую строку, представляющую собой дату,
в порядковое число даты. Следующая формула возвращает значение порядкового числа
даты 22 Августа 2010 года — 4 0 4 1 2 :
=ДАТАЗНАЧ( " 2 2 . 8 . 2 0 1 0 " )

Для того чтобы отобразить результат этой формулы в виде даты, достаточно приме­
нить к ячейке формат даты.

Предупреждение

Будьте особо внимательны при использовании функции датазнач. Тексто­
вая строка, которая может быть использована как дата в одной стране, со­
вершенно не подходит для ввода даты в другой стране. Предыдущий пример
работает прекрасно в том случае, если система настроена для форматов да­
ты России или Украины. Однако при использовании других региональных
форматов даты (в частности, форматов США) формула может возвращать
ошибку, поскольку приложение Excel будет искать восьмой день двадцать
второго месяца.

Создание последовательности дат

В отдельных случаях может возникнуть необходимость вставить в рабочий лист це­
лый ряд последовательных дат. Например, при еженедельном отслеживании продаж тре­

168 Часть II. Использование функций в формулах

буется ввести несколько последовательных дат с интервалом в семь дней. Эти даты бу­
дут служить основой для систематизации коммерческой информации.

Самый эффективный способ ввода ряда последовательных дат не требует никаких
формул. Просто воспользуйтесь инструментом, встроенным в Excel, — автозаполнени­
ем. Для этого введите в ячейку первую дату, а затем, удерживая нажатой правую кнопку
мыши, перетащите в необходимом направлении маркер автозаполнения (маленький чер­
ный квадрат в правом нижнем углу контура выделения). Отпустите правую кнопку мыши
и выберите в контекстном меню команду Заполнить по дням (рис. 6.2).

Рис. 6.2. Использование функции автозаполне­
ния для создания последовательности дат

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

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

В представленном далее примере мы введем первую дату ряда в ячейку А1, а форму­
л у — в ячейку А2. Скопируйте формулу в ячейке вниз по столбцу столько раз, сколько
это необходимо.

Данная формула позволяет создать ряд последовательных дат, следующих одна за
другой с интервалом в семь дней.
=А1 +7

Чтобы создать ряд последовательных дат, отстоящих друг от друга на месяц, вос­
пользуйтесь такой формулой:
=ДАТА(ГОД(А 1) ; МЕСЯЦ(А 1 ) + 1 ; ДЕНЬ(А1))

Глава 6. Дата и время 169

Формула, приведенная ниже, возвращает даты, следующие одна за другой с интерва­
лом в год.
=ДАТА(ГОД(А 1 ) + 1 ; МЕСЯЦ(А1) ;ДЕНЬ(А1))

Чтобы создать ряд, который состоит из дат, относящихся только к рабочим дням (т.е.
исключая субботы и воскресенья), воспользуйтесь приведенной ниже формулой. Имейте
в виду: она предполагает, что дата, введенная в ячейку А1, — рабочий день.
=ЕСЛИ (ДЕНЬНЕД (А1) =6 ;A l +3 ;А1 +1 )

Преобразование строки в дату

Даты, импортируемые как текстовые строки, тоже можно преобразовать в дату.
Предположим, в результате импорта из другого приложения получена приведенная ниже
текстовая строка, которая в действительности представляет собой дату 21 августа 2010
года. Этот текст состоит из четырех знаков, относящихся к году, двух знаков месяца и
двух знаков дня.
20100821

Чтобы преобразовать эту строку в фактическую дату, воспользуйтесь формулой, при­
веденной ниже. Эта формула предполагает, что исходные данные занесены в ячейку А1.
=ДАТА(ЛЕВСИМВ(А 1 ; 4 ) ; ПСТР(А 1 ; 5 ; 2 ) ; ПРАВСИМВ(А1; 2 ) )

Представленная формула использует текстовые функции ЛЕВСИМВ, ПСТР и ПРАВСИМВ
для извлечения из заданной строки определенных чисел. После этого она применяет их как
аргументы функции ДАТА.

Ф Перекрестная ссылка
Для получения дополнительной информации об использовании формул
управления текстом обратитесь к главе 5.

Вычисление количества дней между двумя датами

Самый распространенный тип вычислений, связанный с датами, — это определение
количества дней между двумя заданными датами. Предположим, что на одном из листов
рабочей книги вычисляется процент, получаемый по срочному вкладу. Размер получен­
ного процента зависит от количества дней, на которое открыт счет. Если рабочий лист
содержит дату открытия и дату закрытия счета, то можно легко определить срок в днях,
на который был открыт счет.

Поскольку даты на рабочем листе, как правило, сохраняются в виде последователь­
ных значений, то для вычисления количества дней можно использовать простое вычита­
ние. Предположим, что ячейки А1 и В1 содержат некоторые даты. Следующая формула
возвращает количество дней между этими датами:
=А1-В1

Вероятнее всего, Excel автоматически отформатирует результирующую ячейку как
дату, а не как числовое значение. Вам потребуется вручную изменить формат этой ячей­
ки на числовой. Если ячейка В1 содержит более позднюю дату, чем ячейка А1, то ре­
зультат, возвращаемый формулой, будет отрицательным.

170 Часть II. Использование функций в формулах

Примечание

Если приведенная выше формула отображает некорректное значение, убе­
дитесь, что ячейки a i и В1 действительно содержат даты, а не текстовую
информацию, похожую на даты.

В некоторых случаях вычисление разницы между двумя датами может потребовать зна­
чительных усилий. Чтобы продемонстрировать это, проведем аналогию с “телеграфными
столбами”. Например, если требуется определить количество телеграфных столбов, то за­
дачу их подсчета можно решить двумя способами: непосредственно сосчитав количество
столбов или определив количество пролетов между ними. При этом имейте в виду, что ко­
личество столбов всегда на один больше, чем пролетов.

Чтобы рассмотреть эту ситуацию применительно к некоторому диапазону дат, в каче­
стве примера приведем кампанию по продвижению на рынок некоторого товара. Пред­
положим, что начальная дата кампании по продвижению товара — 1 февраля, а завер­
шающая дата — 9 февраля. Просто вычитая одну цифру из другой, мы получим ответ:
восемь дней. Но в действительности срок продвижения товара — девять дней. В этом
случае, чтобы получить правильный ответ, необходимо сосчитать дни “включительно”,
а не определять количество дней между датами. Ниже приведена формула, позволяющая
вычислить длительность кампании по продвижению товара (предположим, что у нас есть
ячейки, соответствующие этим названиям).
=ПоследнийДень-НачальныйДень+1

Вычисление количества рабочих дней
между двумя датами

Excel умеет не только вычислять количество дней между двумя датами. В случае не­
обходимости можно исключать из числа этих дней выходные и праздничные дни. На­
пример, вычислим, сколько рабочих дней выпадает на ноябрь месяц. Для этого необхо­
димо исключить из расчета субботы, воскресенья и праздничные дни (если таковые
имеются), воспользовавшись функцией ЧИСТРАБДНИ.

Примечание

Название функции чистрабдни часто вводит в заблуждение. Она не имеет
никакого отношения к чистоте или рабству, а, вместо этого, возвращает ко­
личество рабочих дней между двумя заданными датами.

Итак, функция ЧИСТРАБДНИ вычисляет разницу между двумя датами, исключая вы­
ходные дни (субботы и воскресенья). Кроме того, как дополнительное условие можно,
определить диапазон ячеек, содержащий даты, на которые приходятся праздничные дни.
Эти даты также могут быть исключены при расчете. Естественно, Excel не имеет ника­
кой возможности самостоятельно определять праздничные дни, поэтому вы должны
обеспечить программу этой информацией, указав соответствующий диапазон ячеек.

На рис. 6.3 показан рабочий лист, на котором вычисляется количество рабочих дней
между определенными датами. В диапазоне А2 : А8 содержится перечень дат, приходя­
щихся на праздничные дни. Формулы, которые введены в столбце С, вычисляют количе­
ство рабочих дней, расположенных между датами в столбцах А и В. Например, формула
в ячейке С И будет иметь такой вид:
=ЧИСТРАБДНИ( A l l ; В 1 1 ;А 2 :А 8 )

Глава 6. Дата и время 171

Рис. 6.3. Для определения количества рабочих дней в промежутке
между двумя заданными датами воспользуйтесь функцией

ЧИСТРАБДНИ

Формула возвращает значение 3. Это означает, что семидневный период, начинаю­
щийся с 1 января, содержит три рабочих дня. Другими словами, при расчете исключают­
ся два праздничных и два выходных дня. Ячейка С12 содержит формулу, которая вы­
числяет общее количество рабочих дней в первом полугодии 2010 года.

Новинка

В Excel 2010 добавлена усовершенствованная версия функции чистрабдни,
которая называется чистрабдни. межд. Она полезна, когда нужно считать
выходными днями не субботу и воскресенье, а другие дни недели.

Компакт-диск

Файл этого примера на компакт-диске называется work d a y s . x l s x (Chapter06_
RUS. x l s x ) .

Вычисление даты по графику рабочих дней

Функция РАБДЕНЬ является прямой противоположностью функции ЧИСТРАБДНИ.
Например, при запуске в работу определенного проекта, на выполнение которого требу­
ется десять дней, функция поможет вычислить дату окончания проекта.

В приведенной ниже формуле с помощью функции РАБДЕНЬ определяется дата, сле­
дующая через десять рабочих дней после 8 января 2010 года. Рабочими днями считаются
будние дни недели (с понедельника по пятницу).
=РАБДЕНЬ( " 0 8 . 0 1 . 2 0 1 0 " ; 1 0 )

Формула возвращает значение 20 января 2010 года (между 8 и 20 января выпадает
два выходных дня).

Предупреждение

Имейте в виду, что результат, возвращаемый данной формулой, полностью
зависит от региональных форматов даты. В других странах приведенная
выше жестко закодированная дата может интерпретироваться как 1 августа
2010 года. Чтобы избежать этого, используйте следующую формулу:
=РАБДЕНЬ(ДАТА( 2 0 1 0 ; 1 ; 8 ) ; 10 )

Интересно, что второй аргумент функции РАБДЕНЬ может быть отрицательным. Как
и в случае с функцией ЧИСТРАБДНИ, функция РАБДЕНЬ может использовать третий не­

172 Часть II. Использование функций в формулах

обязательный аргумент, который определяет диапазон ячеек с датами, относящимися
к праздничным дням и дням отпуска.

Вычисление количества лет между двумя датами

Следующая формула вычисляет количество лет между двумя датами. В данном слу­
чае предполагается, что ячейки А1 и В1 содержат даты.
=ГОД(А1) -ГОД(В1)

Для извлечения года из каждой заданной даты в этой формуле используется функция ГОД,
после чего один год вычитается из другого. Имейте в виду следующее: если В1 содержит бо­
лее близкий к текущей дате год, чем дата в ячейке А1, результат будет отрицательным.

Следует обратить внимание, что данная функция не вычисляет часть года. Например, если
ячейка А1 содержит дату 3 1 . 1 2 . 2010, а ячейка В1 — дату 0 1 . 01 . 2 0 1 1 , то формула вер­
нет разницу в один год, несмотря на то, что эти даты отличаются всего лишь на один день.

Для вычисления количества лет между двумя датами можно также использовать функцию
ДОЛЯГОДА. Эта функция возвращает количество лет, включая неполные, например:
=ДОЛЯГОДА(А1/ В1/ 1)

Так как функцию ДОЛЯГОДА часто используют в финансовых приложениях, в ней
существует необязательный третий аргумент, представляющий “базис” года. Значение 1
этого аргумента указывает на текущий год.

Вычисление возраста человека

Возраст человека — это количество полных лет, которые человек уже прожил. Фор­
мула, приведенная для вычисления количества лет между двумя датами в предыдущем
разделе, не сможет корректно определить это значение. В этом случае нужно использо­
вать две другие формулы.

Следующая формула возвращает возраст человека, дата рождения которого содер­
жится в ячейке А1. Эта формула использует функцию ДОЛЯГОДА .
=ЦЕЛОЕ(ДОЛЯГОДА(СЕГОДНЯ( ) ; A I ; 1 ) )

Ниже приведена формула, которая применяет для вычисления возраста функцию
РАЗНДАТ.
=РАЗНДАТ(А1; СЕГОДНЯ( ) ; "у ")

Где найти функцию р а з н д а т

В этой главе неоднократно упоминалась функция раз нда т . Обратите внимание, что
ее нет в числе доступных в диалоговом окне Мастер функций, также она не содержится
в списке автозавершения формулы. Поэтому для того, чтобы использовать эту функ­
цию, ее необходимо ввести вручную.

Функция разндат была известна еще со времен Lotus 1-2-3, и, очевидно, с целью
обеспечения совместимости Excel поддерживает ее. По определенным причинам Mi­
crosoft старается сохранить эту функцию в секрете. Интересно, что в версиях програм­
мы ниже Excel 2000 функция разндат даже не упоминалась. Из интерактивной справки
Excel 2002 были удалены все ссылки на нее, хотя сама функция в этой версии приложе­
ния все еще доступна.

Тем не менее, функция разндат очень удобна. Она позволяет вычислить количество
дней, месяцев и лет, находящихся между двумя датами. В ней используется три аргумента:

Глава 6. Дата и время 173

начальная_дата, конечная_дата и определенный код_единицы_измерения, с помощью ко­
торого задается единица времени. Код в функции всегда заключается в кавычки. Ниже при­
ведена таблица, в которой представлены допустимые коды для третьего аргумента.

Код единицы Возвращаемое значение
измерения
Иу II Количество полных лет в заданном периоде
"Ш" Количество полных месяцев в заданном периоде
"d" Количество дней в заданном периоде
"md" Разница в днях между начальной и конечной датой. Месяцы и годы в
данном случае игнорируются
"ym" Разница в месяцах между начальной и конечной датой. Игнорируются
дни и годы
"yd" Разница в днях между начальной и конечной датой. Игнорируются го­
ды между заданными датами

Имейте в виду, что аргумент начальная_дата должен находиться левее, чем аргумент
конечная_дата, в противном случае функция возвращает ошибку. Кроме того, в русифи­
цированной Excel коды единиц измерения должны вводиться английскими буквами.

Вычисление дня года

Итак, 1 января — это первый день года, а 31 декабря — последний. Как определить,
какой по счету день приходится на произвольную дату года? Следующая формула воз­
вращает порядковое число дня года для даты, содержащейся в ячейке А1:
=А1 - ДАТА(ГОД(AI) ; 1 ; 0 )

Если задать аргумент д е н ь равным нулю, функция ДАТА интерпретирует его как по­
следний день предыдущего месяца. Можно задавать отрицательные значения, они ин­
терпретируются аналогично.

Приведенная ниже формула возвращает день года текущей даты:
=СЕГОДНЯ( ) -ДАТА(ГОД(СЕГОДНЯ( ) ) ; 1 ; 0 )

Следующая формула возвращает количество дней в году, которые остались после на­
ступления даты, заданной в ячейке А1:
=ДАТА(ГОД(А1) ; 1 2 ; 3 1 ) -А1

Обратите внимание, что при вводе любой из этих формул Excel применяет к ячейке
формат даты, и чтобы увидеть полученный результат, необходимо применить к ячейке
числовой формат.

Следующую формулу рекомендуется использовать для того, чтобы преобразовать за­
данное порядковое число дня года (например, девяностый день) в определенную дату
и год, которые соответствуют этому дню. В этой формуле предполагается, что содержи­
мое ячейки А1 — это год, а содержимое ячейки В1 — это день года.
=ДАТА (A I ; 1; В 1 )

Вычисление дня недели

Для вычисления дня недели часто используют функцию ДЕНЬНЕД. Она принимает в ка­
честве аргумента дату и возвращает целое число, соответствующее дню недели, в диапазо­
не между 1 и 7. Следует отметить, что в данном случае отсчет дней начинается с воскресе­

174 Часть II. Использование функций в формулах

нья, как это принято в англоязычных программных продуктах. Например, следующая фор­
мула возвращает значение 5, поскольку первый день 2010 года выпадает на пятницу:
=ДЕНЬНЕД(ДАТА( 2 0 1 0 ; 1 ; 1 ) )

Функция ДЕНЬНЕД может принимать и второй, необязательный аргумент, который
определяет систему нумерации дней недели для вывода результата. Если в качестве вто­
рого аргумента введено значение 2, то функция возвращает значение 1 для понедельни­
ка, 2 — для вторника и т.д. Если же в качестве второго аргумента ввести значение 3, то
функция вернет 0 для понедельника, 1 — для вторника и т.д.

Совет

Для того чтобы вычислить день недели даты в ячейке, можете использовать
собственный числовой формат. Выберите команду Главная^Число^Число-
вой формат^Другие числовые форматы. В поле Тип диалогового окна Фор­
мат ячеек введите д д д д и щелкните на кнопке ОК. Введите в ячейку дату
(например, 2 2 . 0 7 . 2 0 1 0 ) . В результате в ячейке будет отображено ч е т ­
в е р г — день недели введенной даты.

Вычисление даты прошлого воскресенья

Хотите узнать, на какую дату приходилось прошедшее воскресенье? Воспользуйтесь

формулой, приведенной ниже. Но имейте в виду, если текущая дата выпадает на воскре­

сенье, то формула возвращает текущую дату.

=СЕГОДНЯ( ) -ОСТАТ(СЕГОДНЯ( ) - 1 ; 7 ) '

Для того чтобы найти дату другого дня, а не воскресенья, измените аргумент 1
в формуле на любой другой в диапазоне между 2 (найти понедельник) и 7 (суббота).

Вычисление дня недели, следующего после
заданной даты

Приведенная ниже формула возвращает дату заданного дня недели, следующего за
определенной датой. Например, эту формулу можно использовать, чтобы вычислить да­
ту первого понедельника после 1 июня 2010 года. Предположим, что ячейка А1 содер­
жит дату, а ячейка А2 — число между 1 и 7 (1 соответствует воскресенью, 2 — поне­
дельнику и т.д.).
=А1+А2-ДЕНЬНЕД(А1)+ ( А2<ДЕНЬНЕД(А1) ) * 7

Если ячейка А1 содержит дату 1 июня 2010 года, а ячейки А2 — значение 2
(понедельник), то формула вернет дату 4 июня 2010 года. Это будет первый понедель­
ник, следующий после пятницы 1 июня 2010 года.

Вычисление даты л-го дня недели в заданном месяце

Иногда возникает потребность вычислить дату, приходящуюся на заданный день не­
дели. Приведем пример. Каждую вторую пятницу месяца в компании — день выплаты
заработной платы. Как определить дату выплат в каждом месяце? Воспользуйтесь для
этого формулой, приведенной ниже.

=ДАТА ( А1;А2 ; 1) +АЗ - ДЕНЬНЕД (ДАТА ( А1 ;А2 ; 1) ) +
(А4-(АЗ>=ДЕНЬНЕД(ДАТА(А1;А 2 ; 1 ) ) ) ) * 7

Глава 6. Дата и время 175

Для этой формулы приняты следующие условия:

• ячейка А1 содержит значение года;

• ячейка А2 содержит значение месяца;

• ячейка АЗ содержит значение дня (1 для воскресенья, 2 — для понедельника и т.д.);

• ячейка А4 содержит номер вхождения (к примеру, 2 для выбора второго вхожде­
ния дня недели, заданного в ячейке АЗ).

Например, если использовать эту формулу для определения даты второй пятницы
в июне 2010 года, формула вернет дату 8 июня 2010 года.

Примечание

Если значение, содержащееся в ячейке А4, не принадлежит к диапазону
дней указанного месяца, то формула вернет дату, относящуюся к следую­
щему месяцу. Например, если задать определение даты шестой пятницы
июня 2010 года (а такой даты не существует), то формула вернет дату пер­
вой пятницы июля.

Вычисление количества заданных дней
недели в месяце

Формула, приведенная ниже, позволяет вычислить количество определенных дней
недели заданного месяца. Предположим, ячейка А1 содержит дату, а ячейка А2 — по­
рядковое число дня недели (значение 1 соответствует воскресенью, 2 — понедельнику
и т.д.). Имейте в виду, что это формула массива, поэтому, чтобы ввести ее, используйте
клавиши <Ctrl+Shift+Enter>.
{=СУММ( (ДЕНЬНЕД (ДАТА (ГОД (А1);МЕСЯЦ(А1); СТРОКА(ДВССЫЛ("1: "
ЬДЕНЬ(ДАТА(ГОД(А1); МЕСЯЦ(А1) + 1 ; 0 ) ) ) ) ) ) = В 1 ) * 1 ) }

Если ячейка А1 содержит дату 8 января 2010 года, а ячейка В1 — значение 3, т.е.
вторник, формула возвращает значение 4. Это значит, что январь 2010 года содержит че­
тыре вторника.

Приведенная выше формула массива вычисляет год и месяц, используя функции ГОД
и МЕСЯЦ. Однако ее можно немного упростить. Для этого введите год и месяц заданной
даты в отдельные ячейки. Для приведенной ниже формулы, которая тоже является фор­
мулой массива, приняты условия, что ячейка А1 содержит значение года, ячейка А2 —
месяца и ячейка В1 — значение дня недели.

{=СУММ( (ДЕНЬНЕД(ДАТА( A I ; А 2 ; СТРОКА(ДВССЫЛ( " 1 : " &ДЕНЬ(ДАТА(А 1 ;
А2+1; 0 ) ) ) )) ) =В1) * 1 ) }

© Перекрестная ссылка
Детально формулы массивов рассмотрены в главах 14 и 15.

На рис. 6.4 показан результат использования этой формулы на рабочем листе. В этом
случае используются и абсолютные, и смешанные ссылки на ячейки, поэтому можно ско­
пировать эту формулу. К примеру, формула в ячейке СЗ выглядит следующим образом:

{=СУММ( (ДЕНЬНЕД(ДАТА( $ В $ 2 ; $АЗ; СТРОКА(ДВССЫЛ(
"1 : " &ДЕНЬ(ДАТА( $ В $ 2 ; $АЗ + 1 ;0) )) ) ) ) = С $ 1 ) *1) }

176 Часть II. Использование функций в формулах

Итоговые формулы на этом листе используют функцию СУММ. Они вычисляют общее
количество дней в месяце (столбец J) и количество каждого дня недели в году (строка 15).

# К о м п а к т-д и ск
Файл этого примера на прилагаемом компакт-диске называется d a y o f

the week count.xlsx(C h ap ter06_R U S.xlsx).

Рис. 6.4. На этом рабочем листе вычисляется количество дней недели в месяцах года

Отображение даты в текстовом виде

Иногда может потребоваться отобразить дату в виде, не предусмотренном ни в одном
встроенном формате дат. К примеру, с помощью приведенной ниже формулы дату
1 6 . 3 . 2 0 1 0 можно отобразить как 16 марта 201 0 г. Предполагается, что стандарт­
ная запись даты находится в ячейке А1.

=ДЕНЬ(А1)&" " & Т Е К С Т ( A I ; "ММММ")&"а "&ГОД(А1)&" г . "

Примечание

Результат этой формулы имеет текстовый формат, а не формат даты.

Конечно, такое преобразование может быть полезным, только если предусмотреть
выбор суффикса с помощью ряда функций ЕСЛИ (например, для апреля нужно приме­
нить суффикс я и удалить ь).

Компакт-диск

Файл этого примера на прилагаемом компакт-диске в авторском варианте
называется o r d i n a l d a y s . x l s x . В нем внимание сосредоточено на ото­
бражении суффиксов s t , n d и др., которые используются с числительными
на английском языке.

Вычисление праздничных дат

Вычисление дат, выпадающих на специфические праздничные дни, требует исполь­
зования специальных методов. Безусловно, это не касается таких дат, как Новый год или
День Независимости США, поскольку они определены издавна. Для них можно просто
использовать функцию ДАТА, о которой речь шла ранее. Следующая формула отобража­

Глава 6. Дата и время 177

ет дату Нового года. Новый год всегда приходится на 1 января; нужный год введите
в кчейку А 1 .

= Д АТА (А 1 ; 1 ; 1)

На самом деле проблем не возникает только с праздниками, постоянно отмечаемыми
по строго определенным датам. А как быть с праздничными днями, дату которых опре­
деляет временной период? К таким праздникам в США, например, относится День труда,
который отмечается в первый понедельник сентября.

На рис. 6.5 показана рабочая книга Excel, в которой вычисляются даты нескольких
праздничных дней. Все формулы содержат ссылку на ячейку А1 — год, для которого
вычисляются даты. Поскольку такие праздники, как Новый год и День Независимости,
отмечаются в строго определенные дни года, для вычисления их дат используется только
функция Д А Т А .

Рис. 6.5. Для того чтобы определить дату праздничного дня, воспользуйтесь специаль­
ными формулами

Компакт-диск

Файл этого примера на прилагаемом компакт-диске называется h o l i ­
days . x l s x (Chapter06_RUS .xlsx).

Новый год
Новый год отмечается первого января.

=ДАТА (А 1 ; 1; 1)

День Мартина Лютера Кинга
Этот праздничный день приходится на третий понедельник января. Далее мы узнаем,

на какую дату выпадет этот день в 2010 году, определенном в ячейке А1.
=ДАТА(А1; 1 ; 1 ) +ЕСЛИ(2<ДЕНЬНЕД(ДАТА(А 1 ; 1 ; 1 ) ) ; 7 -ДЕНЬНЕД(
ДАТА(А1; 1 ; 1 ) ) + 2 ; 2 -ДЕНЬНЕД(ДАТА(А1; 1 ; 1 ) )) + ( ( 3 - 1 ) * 7 )

День президентов
День президентов празднуется в третий понедельник февраля. Следующая формула

вычисляет дату этого дня в указанном году (ячейка А1):
=ДАТА(А1; 2 ; 1 ) +ЕСЛИ(2<ДЕНЬНЕД(ДАТА(А1; 2 ; 1 ) ) ;7-ДЕНЬНЕД(
ДАТА(А1; 2 ; 1 ) ) + 2 ; 2 - ДЕНЬНЕД(ДАТА(А1; 2 ; 1 ) )) + ( ( 3 - 1 ) * 7 )

178 Часть II. Использование функций в формулах

День памяти павших
День памяти павших в гражданской войне в США 1861-1865 гг., в испано-американской и

других войнах отмечается в США в последний понедельник мая. Дата, на которую он придет­
ся в указанном году (ячейка А1), определяется с помощью следующей формулы:
=ДАТА(А1; 6 ; 1 ) +ЕСЛИ(2<ДЕНЬНЕД(ДАТА(А1; 6 ; 1 ) ) ;7-ДЕНЬНЕД(
ДАТА(А1; 6 ; 1 ) ) + 2 ; 2 - ДЕНЬНЕД(ДАТА(А1; 6 ; 1 ) ) ) + ( ( 1 - 1 ) * 7 ) - 7

Обратите внимание, что данная формула вычисляет первый понедельник июня, а за­
тем, чтобы определить предыдущий понедельник мая, из полученного результата вычи­
тает 7 дней.

День Независимости США
Этот праздник из года в год отмечается строго 4 июля.

=ДАТА(А1; 7 ; 4 )

День труда
День труда — это первый понедельник сентября. Формула, приведенная ниже, опре­

деляет его дату в указанном году (ячейка А1).
=ДАТА(А1; 9 ; 1 ) +ЕСЛИ(2<ДЕНЬНЕД(ДАТА(А1; 9 ; 1 ) ) ;7-ДЕНЬНЕД(
ДАТА(А1; 9 ; 1 ) ) + 2 ; 2 -ДЕНЬНЕД(ДАТА(А1; 9 ; 1 ) ) ) + ( ( 1 - 1 ) * 7 )

День ветеранов
Этот праздник выпадает на 11 ноября.

=ДАТА(A I ; 1 1 ; 1 1 )

День Колумба
Этот праздник выпадает на второй понедельник октября. Для вычисления его даты в

указанном году (ячейка А1) используется следующая формула:
=ДАТА(А1; 1 0 ; 1 ) +ЕСЛИ(2<ДЕНЬНЕД(ДАТА(А1; 1 0 ; 1 ) ) ; 7 -ДЕНЬНЕД(
ДАТА(А1; 1 0 ; 1 ) ) + 2 ; 2 -ДЕНЬНЕД(ДАТА(А1; 1 0 ; 1 ) ) ) + ( ( 2 - 1 ) * 7 )

День Благодарения
День Благодарения празднуется в четвертый четверг ноября. Следующая формула

вычисляет дату этого дня в указанном году (ячейка А1):
=ДАТА(А1; 1 1 ; 1 ) +ЕСЛИ( 5<ДЕНЬНЕД(ДАТА(А1; 1 1 ; 1 ) ) ; 7-ДЕНЬНЕД(
ДАТА(А1; 1 1 ; 1 ) ) + 5 ; 5 -ДЕНЬНЕД(ДАТА(А1; 1 1 ; 1 ) ) ) + ( ( 4 - 1 ) * 7 )

Рождество
Католическое Рождество празднуется 25 декабря.

=ДАТА(A I ; 1 2 ; 2 5)

Вычисление даты последнего дня месяца

Для того чтобы вычислить дату, соответствующую последнему дню месяца, можно
воспользоваться функцией ДАТА. При этом число месяцев необходимо увеличить на
единицу, а для дня использовать значение 0. Другими словами, в расчет принимается ус­
ловие, что нулевой день месяца — это последний день предыдущего месяца.

Глава 6. Дата и время 179

Приведенная ниже формула возвращает дату, которая соответствует последнему дню
месяца. Данная формула предполагает, что исходная дата содержится в ячейке А1.
=ДАТА(ГОД(А1) ; МЕСЯЦ(А1)+ 1 ; 0 )

Эту формулу можно модифицировать, после чего она позволит вычислять количество
дней, содержащихся в определенных месяцах. Следующая формула возвращает целое
числовое значение, которое представляет собой количество дней в месяце, заданном
в ячейке А1:
=ДЕНЬ(ДАТА(ГОД(А1); МЕСЯЦ(А1) + 1 ; 0 ) )

Проверка високосного года

Безусловно, для того чтобы выяснить, является ли високосным определенный год, мож­
но написать формулу, которая установит дату шестидесятого дня года: 29 февраля или 1
марта. Но гораздо эффективнее воспользоваться формулой ДАТА, которая в дополнение
откорректирует результат в том случае, если введен неправильный аргумент (например, ко­
гда для дня введено значение 29, в то время как в феврале этого года всего 28 дней).

Данная формула возвращает значение ИСТИНА, если дата, находящаяся в ячейке А1,
относится к високосному году. В противном случае формула возвращает значение ЛОЖЬ.
=ЕСЛИ(МЕСЯЦ(ДАТА(ГОД (А1) ; 2 ; 2 9 ) ) =2 ; ИСТИНА; ЛОЖЬ)

Предупреждение

Помните, что для 1900 года результат истина, возвращаемый данной функ­
цией, будет неправильным. Об этой ошибке речь шла ранее.

Вычисление квартального периода

В финансовых отчетах часто полезно отображать информацию поквартально. Форму­
ла, приведенная ниже, возвращает числовое значение в диапазоне от 1 до 4, которое со­
ответствует календарному кварталу для даты, содержащейся в ячейке А1.
=0КРУГЛВВЕРХ(МЕСЯЦ(А1) / 3 ; 0 )

Данная формула делит количество месяцев на три, а затем округляет полученный ре­
зультат.

Отображение года римскими цифрами

Любителям старых кинофильмов наверняка понравится эта особенность Excel. Сле­
дующая формула отображает 1945 год римскими цифрами и возвращает MCMXLV:
=РИМСКОЕ( 1945)

Функция РИМСКОЕ возвращает текстовую строку, поэтому ее результат нельзя ис­
пользовать для выполнения вычислений. Кроме того, Excel не имеет обратной функции,
которая позволила бы преобразовать римские цифры в арабские.

Функции управления временем

Excel, как нетрудно предположить, ожидаете, содержит массу функций, позволяющих
работать с датами и временем в формулах. В этом разделе будет продемонстрировано
использование таких функций.

180 Часть II. Использование функций в формулах

В табл. 6.5 систематизированы связанные со временем функции Excel. Все приведен­
ные здесь функции можно найти в раскрывающемся списке Формулы ^Библиотека
функций1^Дата и время.

Таблица 6.5. Функции, связанные ро временем

Функция Описание функции

ЧАС Преобразует дату в числовом формате (т.е. порядковое число даты) в часы
МИНУТЫ Преобразует дату в числовом формате в минуты
ТДАТА Возвращает текущую дату и время в числовом формате
СЕКУНДЫ Преобразует дату в числовом формате в секунды
ВРЕМЯ Возвращает дату в числовом формате для заданного времени
ВРЕМЗНАЧ Преобразует время из текстового формата в дату в числовом формате

Отображение текущего времени

Приведенная ниже формула отображает текущее время в числовом формате или как
порядковое число.

= Т Д А Т А ( ) - С Е Г О Д Н Я ()

Чтобы распознать результат как время, необходимо отформатировать ячейку соответ­
ствующим образом с помощью команды Главная1^ Числом Числовой формат. На­
пример, можно отобразить на экране время до и после полудня, используя следующий
числовой формат.

ч ч : м м AM/Р М

Время можно объединить с текстовой строкой. Следующая формула позволяет ото­
бразить текст Т е к у щ е е в р е м я 6 : 2 8 РМ:

= "Те к ущ е е врем я "& Т Е К С Т (Т Д А Т А ( ) ; " ч :мм АМ /Р М ")

Примечание

Имейте в виду, что эти формулы обновляются при пересчете рабочего листа.

Совет

Для того чтобы ввести в заданную ячейку штамп времени (значение, которое
не будет изменяться при пересчете рабочей книги), нажмите комбинацию
клавиш <Ctrl+Shift+: (двоеточие)Х

Отображение произвольного времени

Ранее речь уже шла о том, как вводить временные данные. Достаточно ввести в ячейку
определенное время, используя для этого всего один знак : (двоеточие). Но существует и
другой способ. Чтобы отобразить время, воспользуйтесь функцией ВРЕМЯ. Например,
формула, приведенная ниже, возвращает значение времени, которому соответствуют часы,
содержащиеся в ячейке А1, минуты, введенные в ячейку В1, и секунды из ячейки С1.
= В Р Е М Я (А1;В1;С1)

Подобно функции ДАТА, функция ВРЕМЯ воспринимает недопустимые аргументы,
которые она приводит в соответствие автоматически. Например, введем, в следующую

Глава 6. Дата и время 181

формулу заведомо неправильный аргумент 80. В этом случае формула возвратит значе­
ние 10 :2 0 : 1 5 AM. “Неправильные” 80 минут будут просто добавлены к заданному часу,
а оставшаяся их часть — отображена как 20 минут.
=ВРЕМЯ ( 9 ; 80 ; 15 )

Предупреждение

Если ввести в качестве первого аргумента функции время значение, превы­
шающее 24 часа, то результат будет не совсем ожидаемый. Следуя логике,
можно предположить, что такая формула должна определить числовое зна­
чение даты и времени, равное 1, 0 41 6 67 (т.е. один день и один час), но в
действительности она возвращает 0 , 0 4 1 6 6 7 .
=ВРЕМЯ(2 5 ; 0 ; 0 )

Данная формула возвращает то же значение, что и предыдущая:
=ВРЕМЯ( 1 ; 0 ; 0 )

Функция ДАТА может быть использована вместе с функцией ВРЕМЯ в одной ячейке.
Например, следующая формула вычисляет числовое значение 3 9 4 2 0 , 7 7 0 8 3 3 3 3 3 3 , ко­
торое соответствует времени 18:30 4 декабря 2010 года.
=ДАТА( 2 0 1 0 ; 1 2 ; 4 ) +ВРЕМЯ( 1 8 ; 3 0 ; 0 )

Преду преждение

При вводе описанной выше формулы Excel автоматически форматирует
ячейку для отображения только даты. Чтобы увидеть время, нужно вручную
установить соответствующий числовой формат.

Совет

Для ввода в ячейку текущей даты и времени, которые не будут изменяться
при пересчете листа, нажмите <Ctrl+Shift+; (точка с запятой)>, пробел,
<Ctrl+Shift+: (двоеточие)>, а затем <Enter>.

Функция ВРЕМЗНАЧ преобразует текстовую строку, подобную временному значе­
нию, в числовое представление заданного времени. Приведенная ниже формула возвра­
щает числовое значение 0 , 2 3 9 5 8 3 3 3 3 3 для времени 5:45:
=ВРЕМЗНАЧ( " 5 : 4 5 " )

Чтобы результат этой формулы отображался как время, необходимо применить к ячейке
формат времени. Имейте в виду, что функция ВРЕМЗНАЧ принимает только форматы вре­
мени, поддерживаемые в приложении Excel. Например, следующая формула вернет значе­
ние ошибки, поскольку Excel не воспринимает запись “a.m.” как параметр времени:
=ВРЕМЗНАЧ ( " 5 : 4 5 a . m . " )

Суммирование значений времени,
превышающих 24 часа

Многих удивляет, почему при суммировании нескольких значений времени, когда ре­
зультат превосходит 24 часа, Excel отображает его некорректно. На рис. 6.6 показан
пример, в котором введено несколько значений времени — количество отработанных ча­
сов и минут за каждый день недели. Формула, вычисляющая суммарное значение време­
ни, содержится в ячейке В9.
=СУММ(В2 :В8 )

182 Часть II. Использование функций в формулах
Весьма очевидно, что формула возвращает неправильное значение (18 часов 30 ми­

нут). Ведь простой расчет показывает, что общее количество часов должно быть равным
42 часам 30 минутам. Проблема состоит в том, что на самом деле формула возвращает
числовое значение даты и времени 1 , 7 7 0 8 3 3 , но формат ячейки не позволяет отобра­
жать часть значения, относящегося к дате.

Рис. 6 .6 . Функция с у м м вычисляет общее коли­
чество отработанных часов. Однако данный от­
вет неверен, поскольку ячейка в 9 имеет непра­
вильный формат данных

Для того чтобы полученный результат отображался как время, превышающее 24 часа,
необходимо изменить формат результирующей ячейки, а часть времени, представляю­
щую собой часы, заключить в квадратные скобки. Применение следующего формата
к ячейке В9 позволит правильно отобразить сумму значений времени:

[ч]:мм

Рассмотрим еще один пример расчета времени. На следующем рабочем листе (рис. 6.7)
отслеживаются нормативные и сверхурочные часы, отработанные в течение недели.

Рис. 6.7. Пример рабочей книги для расчета времени, отработанного служащими

Дата начала работы введена в ячейку В4. Столбец В содержит формулы, которые вы­
числяют дни недели, соответствующие каждой дате. Таким образом определяются рабо­
чие дни недели. Отработанное время вводится в диапазон ячеек С7 : F13. Столбец G со­

Глава 6. Дата и время 183

держит формулы, которые вычисляют общее количество часов, отработанное за каждый
день. Например, формула, содержащаяся в ячейке G7, выглядит следующим образом:
=ЕСЛИ(D7<C7; D7+ 1 - С 7 ; D7- С 7 ) +ЕСЛИ(F7< E7 ; F 7 + 1 - Е 7 ; F 7 - Е 7 )

В первой части данной формулы вычисляется количество часов, отработанных слу­
жащими до обеда. Время, отображаемое в столбце С, вычитается из времени в столбце D.
Вторая часть формулы вычисляет часы, отработанные после обеда: столбец Е вычитает­
ся из столбца F. Функция ЕСЛИ должна учесть в расчете различные сдвиги во времени
начала смены. Например, служащий может начинать работу в 10:00, соответственно с
часовым перерывом на обед в 14:00. Имейте в виду, что без функции ЕСЛИ формула мо­
жет возвращать отрицательный результат.

Следующая формула, введенная в ячейку С16, подводит итог по столбцу G и вычис­
ляет общее количество часов, отработанных в течение недели:

=СУММ (G 7 :G 1 3 )

В этом примере принята за основу 40-часовая рабочая неделя. Поэтому все часы, от­
работанные сверх 40 часов, рассматриваются как сверхурочные. Ячейка, отображающая
сверхурочное время, тоже показана на рис. 6.7. Если стандартная рабочая неделя в рас­
четах содержит больше или меньше 40 часов, эта формула может быть изменена в соот­
ветствии с конкретными условиями.

Следующая ячейка (Е18) содержит формулу, которая вычисляет нормативные часы.
Формула возвращает меньшее из двух значений, введенных в качестве аргументов: об­
щее установленное стандартами количество часов или сверхурочные часы.

= М И Н (Е 1 7 ; С в е р х у р о ч н ы е )

И наконец, последняя формула, содержащаяся в ячейке Е19, вычитает нормативные часы
из общего количества отработанных часов и возвращает количество сверхурочных часов.
=С16-С17

Все значения в диапазоне ячеек С16 : С18 отображают время, превышающее 24 часа,
поэтому применяется пользовательский числовой формат.

[ч] :мм

Компакт-диск

Файл примера, показанного на рис. 6.7, на компакт-диске называется t i m e
sheet.xlsm(Chapter06_RUS.xlsx).

Вычисление разницы между двумя временными
значениями

Поскольку Excel позволяет преобразовать значение времени в числовой формат, не­
сложно вычесть более раннее время из более позднего и определить таким образом раз­
ницу во времени. Например, если ячейка А2 содержит значение времени 5:30:00, а ячей­
ка В2 — 14:00:00, то следующая формула вернет значение времени 0 8 : 3 0 : 0 0 , т.е. раз­
ница во времени составит 8 часов 30 минут.
=В2-А2

Если разница во времени отрицательная, что является недопустимым результатом,
Excel отобразит несколько знаков “решетки” (# ### ## #) , поскольку при отсутствии даты
точка отсчета времени — это 0. Отрицательное время, соответственно, означает отрица­
тельное числовое значение, что само по себе уже недопустимо.

184 Часть II. Использование функций в формулах

В том случае, если направление вычитания времени не столь важно, можно использо­
вать функцию ABS, которая возвращает абсолютное значение.
=ABS (В2-А2)

Проблема “отрицательного времени” часто возникает при вычислении разницы между
более ранним и более поздним временем. Вернемся к задаче вычисления количества отра­
ботанных часов. Чтобы определить его, достаточно просто вычесть начальное время рабо­
ты из конечного времени. Это не представляет никакой проблемы, если два указанных зна­
чения приходятся на один и тот же день. Но как быть, если рабочее время начинается неза­
долго до конца текущих суток, а заканчивается на следующие сутки? Например, если
служащий начинает работать в 22:00, а заканчивает в 6:00, то в этом случае результатом
вычитания будет отрицательное время. Таким образом, определить отработанные часы
для смены, начинающейся в одних сутках, а заканчивающейся в других, становится про­
блемой (рис. 6.8).

Рис. 6.8. Если вычислить количество отработанных ча­
сов при смене, продолжающейся заполночь, Excel
вернет ошибочное значение

Какой может быть выход из такой ситуации? Использование функции ABS и вычис­
ление абсолютного значения в этом случае не подходит, поскольку формула возвращает
неправильный результат— 16 часов. Тем не менее приведенная ниже формула может
сработать:
=ЕСЛИ(В2<А2;В2+1;В2)-А2

Существует и более простая формула для решения задачи:
=ОСТАТ(В2-А2;1)

Совет

Как уже отмечалось, работа с отрицательным временем возможна, если ра­
бочая книга использует систему дат 1904. Чтобы перейти к этой системе
дат, откройте диалоговое окно параметров Excel, перейдите во вкладку До­
полнительно и в разделе При пересчете этой книги установите флажок Ис­
пользовать систему дат 1904. Будьте бдительны! При изменении системы
исчисления все даты, имеющиеся в рабочей книге, будут увеличены на че­
тыре года.

Преобразование “военного времени”

“Военное время”, как правило, представляет собой четырехразрядное значение в пре­
делах от 0000 до 2359. Например, 1:00 AM отображается как 0100 часов, а 3:30 РМ как
1530 часов. Формула, приведенная ниже, преобразует это значение (ячейка А1) в обще­
принятый формат времени.
=ВРЕМЗНАЧ (ЛЕВСИМВ (А1; 2) &" : "&ПРАВСИМВ ( А1; 2 ) )

Глава 6. Дата и время 185

Если ячейка А1 содержит больше или меньше четырех чисел, то результат, который
возвратит данная формула, будет неверным. Следующая формула корректирует эту
ошибку и возвращает допустимое значение времени для любого времени в “военном
формате” от 0 до 2359:
=ВРЕМЗНАЧ (ЛЕВСИМВ (ТЕКСТ ( А1; "0 000 ") ; 2 ) &" : "&ПРАВСИМВ (А1; 2) )

В более простой формуле задействована функция ТЕКСТ, которая форматирует стро­
ку как текст, а затем использует функцию ВРЕМЗНАЧ, чтобы отобразить результат
в формате времени.
=ВРЕМЗНАЧ(ТЕКСТ(А 1 ;"0 0 \ :0 0") )

Преобразование часов, минут и секунд в десятичном
исчислении в значение времени

Иногда часы, минуты или секунды времени отображаются в виде значений в десятич­
ном исчислении. Для того чтобы преобразовать их в стандартный формат времени, про­
сто разделите значение на 24. Предположим, что ячейка А1 содержит значение часа
9,25. Следующая формула возвращает 0 9 : 1 5 : 0 0 (9 часов 15 минут):
=А1/24

Подобная формула может использоваться и для преобразования минут в десятичном
исчислении. Но в знаменателе должно стоять число 144 0 — количество минут в сутках.
Например, если ячейка А1 содержит значение 5 00 (минут), то следующая формула воз­
вращает 0 8 : 2 0 : 0 0 (8 часов 20 минут):
=А1/144 0

При преобразовании секунд в стандартный формат времени значение делится на 8 6 4 0 0
(число секунд в сутках). Например, если ячейка А1 содержит число 6 5 0 0 0 (секунд), то
формула, приведенная ниже, возвращает 1 8 : 0 3 : 2 0 ( 1 8 часов 3 минуты и 20 секунд):
=А1/86400

Добавление часов, минут или секунд к заданному
времени

Функция ВРЕМЯ также используется для добавления часов, минут или секунд ко вре­
мени, содержащемуся в определенной ячейке. Например, если ячейка А1 содержит вре­
мя, следующая формула позволяет добавляет к нему 2 часа и 30 минут и отображает по­
лученный результат:
=А1+ВРЕМЯ (2 ; 3 0 ; 0)

Эта же функция используется для заполнения определенного диапазона ячеек возрас­
тающими значениями времени. На рис. 6.9 показан рабочий лист, в котором диапазон
ячеек А1 .*А14 содержит значения времени, каждое из которых последовательно увели­
чивается на 10 минут. Только в одну из этих ячеек (А1) значение времени вводится
вручную. В остальные ячейки просто копируется формула, введенная в ячейку А2.

=А1+ВРЕМЯ ( 0 ; 10 ; 0)

186 Часть II. Использование функций в формулах

Совет

Для заполнения значениями времени диапазона ячеек можно также исполь­
зовать функцию автозаполнения. К примеру, чтобы создать последователь­
ность значений времени с приращением в 10 минут, введите в ячейку А1
значение 8 : 00, а в ячейку А2 — 8 : 1 0 . Выделите обе ячейки и перетащите
правой кнопкой мыши маркер автозаполнения (в нижнем правом углу ячей­
ки А2) ВНИЗ ПО СТОЛбцу.

Работа с часовыми поясами

Представьте, что вам необходимо использовать рабочий лист, содержащий дату и
время по Гринвичу, которое иногда называют универсальным временем. Как перейти от
этого времени ко времени текущего часового пояса? Для того чтобы дата и время соот­
ветствовали определенному часовому поясу, необходимо, в первую очередь, установить
разницу между этими поясами. Например, разница между временем по Гринвичу (GMT)
и среднеамериканским временем (CST) составляет -6 часов.

В данном случае функцию ВРЕМЯ с отрицательным аргументом использовать нельзя,
поэтому задача требует несколько иного решения. Один час эквивалентен 1/24 суток. Та­
ким образом, разницу во времени можно разделить на 24, а затем полученный результат
добавить ко времени исходного часового пояса.

На рис. 6.10 приведен пример рабочего листа, в котором дата и время по Гринвичу
приводятся в соответствие текущему часовому поясу. Ячейка В1 содержит разницу в ча­
сах между поясами — в данном случае -5 часов для Стандартного восточного времени
США (EST). В ячейке В4 отображается приведенная ниже формула, которая скопирова­
на вниз по столбцу.
=А4+($В$1/24)

Рис. 6.9. Для заполнения ячеек не- Рис. 6.10. На этом рабочем листе дата и время переводятся
сколькими временными значения- из одного часового пояса в другой
ми, последовательно возрастаю­
щими на 10 минут, использовалась
всего одна формула

Данная формула весьма эффективна, поскольку добавляет х часов к дате и времени,
содержащимся в столбце А. Если ячейка В1 содержит отрицательное значение часа, это
значение вычитается из даты и времени, отображаемых в столбце А. Заметьте, что в не­
которых случаях это действие также изменяет и дату.

Глава 6. Дата и время 187

Компакт-диск

Файл этого примера на компакт-диске называется gmt c o n v e r s i o n . x l s x
(Chapter06_RUS. x l s x ) .

Округление значений времени

Иногда может потребоваться округлить время до определенного значения. Например,
округлить записи в отчете об использовании времени до ближайшего значения 15 минут.
В этом разделе мы обсудим несколько возможных решений задачи округления времен­
ных значений.

Следующая формула округляет время, содержащееся в ячейке А1, до ближайшей минуты:
=ОКРУГЛ(А1*1440;0)/ 1 4 4 0

Эта формула работает следующим образом: заданное время умножается на 144 0 —
врезультате вычисляется общее количество минут. После этого полученный результат
обрабатывается с помощью функции ОКРУГЛ и делится на 144 0. Например, если ячейка
А1 содержит значение 11: 52 : 34, формула возвращает 1 1 : 5 3 : 0 0 .

Представленная ниже формула несколько напоминает предыдущую, за исключением
того, что она округляет время в ячейке А1 до ближайшего часа.
=0КРУГЛ ( А1 *2 4 ; 0 ) / 2 4

Если ячейка А1 содержит значение 5 : 2 1 : 3 1 , данная формула возвращает 5 : 0 0 : 0 0 .
Формула, приведенная ниже, округляет время, отображаемое в ячейке А1, до бли­
жайших 15 минут.
=0КРУГЛ(А1*24/0 , 2 5 ; 0 ) * ( 0 , 2 5 / 2 4 )

В этой формуле значение 0 , 2 5 означает четверть часа, т.е. 15 минут. Аналогично,
чтобы округлить время до ближайших 30 минут, просто измените 0 , 2 5 на 0 , 5 , как это
сделано в следующей формуле:
=0КРУГЛ ( А 1 * 2 4 / 0 , 5 ; 0 ) * ( 0 , 5 / 2 4 )

Работа со значениями, не имеющими отношения
ко времени суток

Вы когда-нибудь сталкивались с задачей составления списка результатов гоночных
соревнований или, например, подсчета времени ежедневной пробежки? Эти временные
значения фактически никак не связаны с определенным временем дня. Они, скорее, ха­
рактеризуются длительностью конкретного события в часах, минутах, секундах. Итак,
предположим, что время, отведенное на тест, составляет 35 минут 45 секунд. Это значе­
ние может быть введено в ячейку следующим образом:

00:35:45

Excel воспринимает эту запись достаточно хорошо и интерпретирует ее как 12:35:45
AM. Остается только установить для этой ячейки подходящий формат времени. Имейте в
виду, что при вводе времени, которое не содержит часа, для значения часа необходимо
указать хотя бы один нуль. В противном случае, если данные часа будут опущены, Excel
интерпретирует эту запись как 35 часов 45 минут.

На рис. 6.11 показан пример рабочего листа, в котором отслеживаются тренировки
спортсмена. Столбец А содержит обыкновенные даты. Столбец В — расстояние в милях.
Столбец С отображает время, которое потребовалось на преодоление каждой дистанции.

188 Часть II. Использование функций в формулах

Формулы, содержащиеся в столбце D, вычисляют скорость спортсмена в милях за час.
Например, формула в ячейке D2 выглядит следующим образом:
=В2/(С2*24)

Рис. 6.11. На этом рабочем листе приведены временные значения,
не связанные с определенным временем суток

В столбце Е содержатся формулы, которые вычисляют скорость движения спортсме­
на в минутах за милю. Например, в ячейке Е2 расположена следующая формула:
= (С2*60*24) /В2

Ячейки в столбце F отображают формулы, которые вычисляют итоги использованно­
го времени (данные столбца С). Во всех ячейках столбца G установлен приведенный ни­
же числовой формат, который позволяет отображать время, превышающее 24 часа.
[ч ч ]:мм:сс

Компакт-диск log.xlsx

Файл этого примера на компакт-диске называется j o g g i n g
(Chapter06_RUS .x lsx ).

Глава

Способы суммирования
и подсчета данных

Вэтой главе...

♦ Подсчет и суммирование ячеек электронной таблицы
♦ Подсчет и суммирование записей в базах данных и сводных таблицах
♦ Основные формулы подсчета
♦ Расширенные формулы подсчета ячеек
♦ Формулы суммирования
♦ Условное суммирование по одному критерию
♦ Условные суммы на основе нескольких критериев

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

Подсчет и суммирование ячеек
электронной таблицы

Формулы подсчета, как правило, возвращают количество ячеек заданного диапазона,
соответствующих определенному условию. Суммирующие формулы возвращают сумму
значений в ячейках заданного диапазона, также отвечающих определенному условию.
Всвою очередь, диапазон ячеек, которые должны быть подсчитаны или просуммирова­
ны, содержит либо данные, либо пустые ячейки.

В табл. 7.1 перечислены функции, которые используются при создании формул сум­
мирования и подсчета. Если ни одна из представленных функций не подходит для реше­
ния конкретной задачи, можно использовать формулы массива, которые не рассматри­
ваются в этой главе.

190 Часть II. Использование функций в формулах

© Перекрестная ссылка

Более подробно о формулах массива, используемых для подсчета и сумми­
рования ячеек, рассказано в части IV. Операции подсчета и суммирования
данных в списках описаны в главе 9.

Примечание

Если данные представлены в виде таблицы, многие операции подсчета
и суммирования можно выполнять с помощью функции автофильтрации. По­
сле установки критерия автофильтрации таблица отображает только строки,
удовлетворяющие критерию. Остальные строки не удаляются, а скрываются.
Несложно создать формулу, выводящую результаты подсчета в итоговой
строке таблицы. Использование таблиц рассматривается в главе 9.

Таблица 7.1. Функции суммирования и подсчета в Excel

Функция Описание функции

СЧЁТ Возвращает количество ячеек в диапазоне, содержащих числовые
значения
СЧЁТЗ
СЧИТАТЬПУСТОТЫ Возвращает количество непустых ячеек в диапазоне
СЧЁТЕСЛИ
Возвращает количество пустых ячеек в диапазоне
СЧЁТЕСЛИМН
Подсчитывает количество непустых ячеек в диапазоне, удовлетво­
БСЧЁТ ряющих заданному условию

БСЧЁТА Подсчитывает количество непустых ячеек, удовлетворяющих задан­
ному набору условий
КВАДРОТКЛ
БДСУММ Подсчитывает количество числовых ячеек базы данных рабочего лис­
та, удовлетворяющих заданному критерию
ЧАСТОТА
Подсчитывает количество непустых ячеек базы данных рабочего лис­
ПРОМЕЖУТОЧНЫЕ. та, удовлетворяющих заданному критерию
ИТОГИ
Возвращает сумму квадратов отклонений точек данных от среднего по
СУММ выборке; используется преимущественно в статистических формулах
СУММЕСЛИ
СУММЕСЛИМН Суммирует числа в столбце базы данных, удовлетворяющие заданно­
СУММПРОИЗВ му условию
СУММКВ
Возвращает распределение частот в виде вертикального массива; ис­
СУММСУММКВ пользуется только в формулах массивов со множеством ячеек

При использовании значений от 2 до 3 в качестве первого аргумента
возвращает количество ячеек, содержащихся в промежуточных ито­
гах списка или базы данных; при использовании в качестве первого
аргумента значения 9 возвращает сумму значений ячеек промежу­
точных итогов

Возвращает сумму аргументов

Суммирует ячейки, удовлетворяющие заданному условию

Суммирует ячейки, удовлетворяющие заданному набору условий

Возвращает сумму произведений соответствующих элементов массивов

Возвращает сумму квадратов аргументов. Аргументами могут быть
числа, массивы, имена или ссылки на ячейки, содержащие числа.
Применяется преимущественно в статистических формулах

Возвращает сумму сумм квадратов соответствующих элементов
двух массивов; используется преимущественно в статистических
формулах

Глава 7. Способы суммирования и подсчета данных 191

Функция Окончание табл. 7.1

сум м квразы Описание функции

сум м разнкв Возвращает сумму квадратов разностей соответствующих значений в двух
массивах; применяется преимущественно в статистических формулах
Возвращает сумму разностей квадратов соответствующих значений в
двух массивах; используется преимущественно в статистических
формулах

Быстрый подсчет и суммирование

Начиная с Excel 97 компания Microsoft включает в приложение средство под назва­
нием Автосумма, которое отображает в строке состояния информацию о выделенном
диапазоне. Как правило, отображаются среднее, сумма и количество непустых ячеек
выделенного диапазона. Можно задать, что должно быть показано в строке состояния.
Для этого щелкните правой кнопкой мыши на панели автосуммы в строке состояния
ивыберите в контекстном меню нужные параметры.

При выборе элемента Количество строка состояния будет отображать количество
непустых ячеек в выделенном диапазоне. При выборе элемента Количество чисел ото­
бражается количество ячеек в числовом формате в выделенном диапазоне.

192 Часть II. Использование функций в формулах

Подсчет и суммирование записей в базах
данных и сводных таблицах

Excel предоставляет в ваше распоряжение специальные функции подсчета и сумми­
рования значений, содержащихся в базах данных и сводных таблицах. Функции БСЧЁТ
и БДСУММ— это функции базы данных, которые работают с электронной таблицей и
требуют указания определенного диапазона ячеек, удовлетворяющего условиям сумми­
рования и подсчета.

Перекрестная ссылка

Информация о функциях базы данных, а также об использовании формул
подсчета и суммирования базы данных электронной таблицы приведена
в главе 9.

Создание сводных таблиц— великолепный способ получения количества и суммы
элементов без использования формул. Как и функция базы данных, сводная таблица ис­
пользуется в том случае, если данные представлены в форме базы данных.

Перекрестная ссылка

Для получения дополнительной информации о сводных таблицах обрати­
тесь к главе 18.

Основные формулы подсчета

В этом разделе рассмотрены основные формулы подсчета, которые предоставляет
в ваше распоряжение Excel. Все описанные ниже формулы достаточно просты в использо­
вании. Они демонстрируют принципы использования функций, которые подсчитывают ко­
личество ячеек заданного диапазона, удовлетворяющих определенным условиям. На
рис. 7.1 показан рабочий лист, в котором для суммирования содержимого 20-ти ячеек диа­
пазона А 1 :В10 под названием Данные используются специальные формулы (столбец Е).

Компакт-диск

Рабочую книгу, показанную на рис. 7.1, в авторском варианте можно найти на
прилагаемом компакт-диске в файле b a s i c c o u n t i n g . x l s x ( C h a p t e r 0 7 _
RUS . x l s x ) .

Несколько слов о примерах, приведенных в этой главе

В большинстве примеров главы в качестве аргументов функций используются име­
нованные диапазоны. Если захотите адаптировать эти формулы к своим задачам, заме­
ните имена и адреса диапазонов.

Некоторые примеры, приведенные в главе, содержат формулы массива (см. гла­
ву 14). Они относятся к специальному типу формул; при отображении в строке формул
они заключаются в фигурные скобки. Например:

{= Д а н н ы е * 2 }
Чтобы сообщить Excel, что введенная формула представляет собой формулу масси­
ва, после ее ввода вместо <Enter> нажмите комбинацию клавиш <Ctrl+Shift+Enter>. Фи­
гурные скобки вводить не нужно — Excel сделает это за вас.

Глава 7. Способы суммирования и подсчета данных 193

Рис. 7.1. Формулы в столбце е могут быть использованы для проведения
различных расчетов данных в диапазоне А 1 : в ю

Подсчет общего количества ячеек

Чтобы подсчитать общее количество ячеек в диапазоне, используйте формулу, приве­
денную ниже. Она возвращает количество ячеек в диапазоне Данные, умножая количе­
ство строк (возвращенное функцией ЧСТРОК) на количество столбцов (возвращенное
функцией ЧИСЛСТОЛБ).

=ЧСТРОК(Данные)*ЧИСЛСТОЛБ(Данные)

Подсчет пустых ячеек

Следующая формула возвращает количество пустых ячеек в диапазоне Данные:

=СЧИТАТЬПУСТОТЫ(Данные)

Функция СЧИТАТЬПУСТОТЫ подсчитывает ячейки, которые содержат формулу, возвра­
щающую пустую строку. Например, формула, приведенная ниже, возвращает пустую строку,
если ячейка А1 содержит значение, большее 5. Если ячейка А1 соответствует этому условию,
функция СЧИТАТЬПУСТОТЫ рассматривает ячейку с данной формулой как пустую.

=ЕСЛИ (А1 >5 ; " " ;А 1 )

Примечание

Имейте в виду, что функция с ч и т а т ь п у с т о т ы не учитывает ячейки, содер­
жащие нулевое значение, даже если снять флажок Показывать нули в ячей­
ках, которые содержат нулевые значения вкладки Дополнительно диалогово­
го окна параметров программы.

Функция СЧИТАТЬПУСТОТЫ может использовать в качестве аргумента целую строку
или столбец. Например, приведенная ниже формула возвращает количество пустых яче­
ек в столбце А.

=СЧИТАТЬПУСТОТЫ(А :А)

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

^СЧ И ТАТЬП УС ТО ТЫ (Лист!!1 :1 0 4 8 5 7 6 )

194 Часть II. Использование функций в формулах

Подсчет непустых ячеек

Представленная далее формула использует функцию СЧЁТЗ и возвращает количество
непустых ячеек в диапазоне Данные.
=СЧЁТЗ(Данные)

Функция СЧЁТЗ подсчитывает ячейки, содержащие числовые значения, дату, время,
текст и логические значения ИСТИНА или ЛОЖЬ.

Примечание

Если ячейка содержит формулу, возвращающую пустую строку, она включа­
ется в итог, возвращенный функцией с ч ё т з , даже несмотря на то, что внеш­
не выглядит пустой.

Подсчет ячеек, содержащих числовые значения

Следующая формула использует функцию СЧЁТ и позволяет подсчитать количество
ячеек диапазона Данны е, содержащих только числовые значения.
=СЧЁТ(Данные)

Ячейки, содержащие значения даты и времени, также рассматриваются как числовые

значения. Ячейки, отображающие логические значения (ИСТИНА или ЛОЖЬ), числовыми

не считаются. /

Подсчет ячеек, отображающих нетекстовые значения

В приведенной ниже формуле массива используется функция ЕНЕТЕ КСТ. Она воз­
вращает значение ИСТИНА в том случае, если ее аргумент ссылается на ячейку, не со­
держащую текстовое значение (включая также пустые ячейки). Формула возвращает ко­
личество ячеек, не содержащих текст (включая пустые ячейки).
{=СУММ(ЕСЛИ(ЕНЕТЕКСТ(Данные); 1 ) ) }

Подсчет ячеек, содержащих текстовые значения

Чтобы подсчитать в диапазоне Данные количество ячеек, содержащих тест, восполь­
зуйтесь приведенной ниже формулой массива.
{=СУММ(ЕСЛИ(ЕТЕКСТ(Данные);1)) }

Подсчет логических значений

Следующая формула массива возвращает количество логических значений (ИСТИНА
или ЛОЖЬ) в диапазоне Данные:
{ =СУММ(ЕСЛИ(ЕЛОГИЧ(Данные);1))}

Подсчет ошибок в диапазоне

Приложение Excel предлагает три функции, которые позволяют определить, содер­
жит ли ячейка ошибки.

• Функция ЕОШИБКА возвращает значение ИСТИНА в том случае, если ячейка содержит
любое значение ошибки (#Н/Д, #ССЫЛКА!, #ЗНАЧ !, #Д Е Л /0 !, #ИМЯ?, #НУЛЬ !).

Глава 7. Способы суммирования и подсчета данных 195

Функция ЕОШ возвращает значение ИСТИНА, если ячейка содержит любое значе­
ние ошибки, за исключением #Н /Д .

Функция ЕНД возвращает значение ИСТИНА, если значение равно #Н /Д .

Примечание

Обратите внимание: ошибка #н/д (нет данных) обрабатывается не так, как
другие. В большинстве случаев это вообще не ошибка. Часто сообщение
#н/д используется в качестве правильного заполнителя ячейки при отсутст­
вии данных. Значение #н/д можно ввести непосредственно или с помощью
функции нд.

Перечисленные выше функции применяются в формулах массива для подсчета зна­
чений ошибки в определенном диапазоне. Например, следующая формула массива воз­
вращает общее количество ячеек, содержащих значения ошибки, в диапазоне Данные:
(=СУММ(ЕСЛИ(ЕОШИБКА(Данные);1)) }

При необходимости вместо функции ЕОШИБКА можно использовать функции ЕОШи ЕНД.
Чтобы подсчитать количество ошибок определенного типа, воспользуйтесь функцией
СЧЁТЕСЛИ. Например, следующая формула возвращает количество ячеек с типом ошиб­
ки # Д Е Л /0 !, содержащихся в диапазоне Данные:
=СЧЁТЕСЛИ(Данные;"#ДЕЛ/0!")

Расширенные формулы подсчета ячеек

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

Подсчет ячеек с помощью функции СЧЁТЕСЛИ

Функцию СЧЁТЕСЛИ чаще всего используют в формулах, ограниченных одним усло­
вием. Функция СЧЁТЕСЛИ принимает два аргумента.

• Д и а п а зо н . Содержит значения, определяющие, включать ли конкретную ячейку
в расчет.

• Л о г и ч е с к о е _ у с л о в и е . Определяет, включать ли конкретную ячейку в расчет.
В табл. 7.2 представлены некоторые примеры использования функции СЧЁТЕСЛИ.
Приведенные формулы обращаются к диапазону Данны е. С помощью условия можно
добиться большой гибкости возвращаемых данных. Обратите внимание, что аргумент
Л о г и ч е с к о е _ у с л о в и е может представлять собой любой тип данных: константы, вы­
ражения, функции, ссылки на ячейку и даже групповые символы (* и ?).

Подсчет ячеек, удовлетворяющих множеству условий

Во многих случаях формула должна учитывать только те ячейки, которые удовлетво­
ряют двум или более условиям. Выбор условий основывается на ячейках, которые уже
подсчитаны, или на строго определенном диапазоне ячеек.

196 Часть II. Использование функций в формулах

Таблица 7 .2 . Примеры использования функции СЧЁТЕСЛИ

=с ч ё т е с л и (Данные; 12) Возвращает количество ячеек, содержащих значе­
ние 12

=с ч ё т е с л и (Данные;" < 0 ") Возвращает количество ячеек, содержащих отрица­
тельное значение
=с ч ё т е с л и (Данные; "<>о")
Возвращает количество ячеек, значение которых не
равно о

=с ч ё т е с л и ( Д а н н ы е > 5 ") Возвращает количество ячеек, значение которых
больше 5

=с ч ё т е с л и (Данные ;А 1) Возвращает количество ячеек, значение которых
равно содержимому ячейки a i

=с ч ё т е с л и (Данные; ">"&a i ) Возвращает количество ячеек, значение которых
больше, чем значение ячейки a i

=с ч ё т е с л и ( Д анны е; 11* " ) Возвращает количество ячеек, содержащих текст

=с ч ё т е с л и (Данны е;"???") Возвращает количество ячеек, содержащих ровно
три символа
=с ч ё т е с л и (данные/"бюджет")
Возвращает количество ячеек, содержащих слово
=с ч ё т е с л и (Данные; "*бюджет*п) бюджет (без учета регистра)

Возвращает количество ячеек, содержащих слово
бюджет в составе любого текста

=с ч ё т е с л и (Данные; " А * ") Возвращает количество ячеек, отображающих
текст, который начинается с символа а (без учета
=с ч ё т е с л и (Данные/с е г о д н я ()) регистра)

Возвращает количество ячеек, содержащих теку­
щую дату

=с ч ё т е с л и (Данные /" > Возвращает количество ячеек, значение которых
" &СРЗНАЧ (Данные)) больше среднего

=с ч ё т е с л и (Данные/">"& с р з н а ч ( Возвращает количество ячеек, значение которых
Данные) +СТАНДОТКЛОН (Данные) * превышает утроенное стандартное отклонение от
3) среднего

=с ч ё т е с л и (Данные/з) + с ч ё т е с л и Возвращает количество ячеек, содержащих значе-
(Данные / - 3)
НИвЗИЛИ-3

=с ч ё т е с л и (Данные/и с т и н а ) Возвращает количество ячеек, содержащих значе­
ние ИСТИНА

=с ч ё т е с л и (Данные /и с т и н а ) + Возвращает количество ячеек, отображающих логи-
ческое значение (и с т и н а и л и л о ж ь )
с ч ё т е с л и (Данные / Ложь)

=с ч ё т е с л и (Данные/"#н/Д") Возвращает количество ячеек, содержащих значе­
ние ошибки # н / д

Все примеры этого раздела приведены для простого рабочего листа, показанного на
рис. 7.2, в котором в столбцах Месяц, Представитель и Тип содержатся данные о про­
дажах товара фирмой. Диапазоны ячеек данного рабочего листа имеют имена, соответ­
ствующие значениям, введенным в строку 1.

Компакт-диск

Рабочую книгу, показанную на рис. 7.2, можно найти на прилагаемом компакт-
диске в файле m u l t i p l e c r i t e r i a c o u n t i n g . x l s x ( C h a p t e r 0 7 _ R U S . x l s x ) .

Глава 7. Способы суммирования и подсчета данных 197

t Новинка
Некоторые примеры этого раздела используют функцию с ч ё т е с л и м н , вве­
денную в версии Excel 2007. В разделе также будут представлены альтерна­
тивные версии формул, которые нужно использовать, если создаваемую
рабочую книгу требуется совместно использовать с теми, у кого установле­
ны предыдущие версии Excel.

Рис. 7.2. На этом рабочем листе приведены различные варианты подсчета, использующие
целый ряд условий

Использование условия и

Функция СЧЁТЕСЛИМН принимает пары аргументов. В пару входят диапазон условия
и условие. Количество пар не ограничено. Логическая операция И реализуется благодаря
тому, что функция учитывает ячейку, только если истинны все пары. Используя условие
И, можно подсчитать все ячейки диапазона, соответствующие определенным условиям.
Типичным примером использования этого условия можно считать формулу, с помощью
которой подсчитывается количество значений, содержащихся в пределах определенного
числового диапазона. Предположим, что необходимо подсчитать ячейки, которые ото­
бражают значения большие 1 0 0 и меньшие или равные 2 00. Функция СЧЁТЕСЛИМН
принимает следующий вид:

=СЧЁТЕСЛИМН (О б ъ е м ; " > 1 0 0 " ; О б ъ е м ; "< = 2 0 0 " )

В данном примере функция СЧЁТЕСЛИМН принимает две пары аргументов. Первым
элементом каждой пары является диапазон значений (в нашем примере это Объем), вто­
рым — критерий. Формула возвращает количество всех ячеек диапазона Объем, в кото­
рых значение больше 100 и меньше 200.

До выхода в свет Excel 2007 вам пришлось бы использовать формулу следующего вида:

СЧЁТЕСЛИ(Объем;" > 1 0 0 " ) -СЧЁТЕСЛИ(Объем;"> 200")

198 Часть II. Использование функций в формулах

Возможно, вид данной формулы вводит в заблуждение. Несмотря на то что ее цель
состоит в подсчете значений, которые меньше или равны 2 00, но больше ста, в формуле
написано " > 2 0 0 " . Объяснение простое: знак “минус” означает, что эти ячейки вычита­
ются из общего количества. Существует еще один метод, в котором используется фор­
мула массива (этот метод проще предыдущего):
{=СУММ( (Объем>ЮО) * (Объем< =2 00) ) }

Примечание
При вводе ф ормулы м ассива не забывайте нажимать <Ctrl+Shift+Enter>
вместо <Enter>; также не вводите вручную ф игурные скобки — они будут

вставлены автоматически.

Условия подсчета можно задать не только для суммируемых, но и для других ячеек.
Например, можно подсчитать количество продаж в ячейках, соответствующих следую­
щим условиям:

• месяц — январь
и

• представитель — Данилкин
и

• сумма больше 1000.
Следующая формула возвращает количество ячеек массива, соответствующих всем
трем условиям:
=СЧЁТЕСЛИМН(Месяц;"Январь"; П р е д с т а в и т е л ь ; "Данилкин";
Объем;">1000")

В качестве альтернативы можно использовать следующую формулу массива:
{=СУММ( (Месяц="Январь" ) * (П редстави тель="Д ан илк и н")*
(Сумма>1000))}

Использование условия или
Чтобы подсчитать количество ячеек с помощью условия ИЛИ, иногда задействуется

несколько функций СЧЁТЕСЛИ. Например, следующая формула подсчитывает количест­
во значений 1, 3 и 5 в диапазоне Данные:
=СЧЁТЕСЛИ(Данные; 1 ) +СЧЁТЕСЛИ(Данные; 3 ) +СЧЁТЕСЛИ(Данные;5)

Функция СЧЁТЕСЛИ также используется в формуле массива. Например, формула
массива, приведенная ниже, возвращает тот же результат, что и предыдущая формула.
{=СУММ(СЧЁТЕСЛИ(Данные;{ 1 ; 3 ; 5 } ) ) }

Если условие ИЛИ применяется не к подсчитываемым ячейкам, а к ячейкам другого диапа­
зона, функция СЧЁТЕСЛИ работать не будет. Вернемся снова к рис. 7.2 и предположим, что
необходимо подсчитать количество продаж, соответствующих следующим условиям:

• месяц — январь
или

• представитель — Данилкин
или

• объем — более 1000.

Глава 7. Способы суммирования и подсчета данных 199

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

{=С УМ М (ЕС Л И ( (М е с я ц = "Я н в а р ь " ) + (П р е д с т а в и т е л е " Д а н и л к и н ")+
(0бъем>1000);1))}

Одновременное использование условий и и или

При подсчете ячеек условия И и ИЛИ можно комбинировать. Предположим, что тре­
буется подсчитать продажи, удовлетворяющие следующим условиям:

• месяц — январь

и

• представитель Данилкин

или

• представитель Кукина.
Следующая формула массива возвращает объем продаж, соответствующих этим ус­
ловиям:

=СЧЁТЕСЛИМН (Месяц; "Январь" ; П р е дставитель ;"Данилкин" )+
СЧЁТЕСЛИМН ( М е с я ц ;"Январь " ; П р е д с т а в и т е л ь ;"К у к и н а " )

Так как в данном случае в аргументах функции приходится повторять операцию “И”,
использование СЧЁТЕСЛИМН может привести к созданию длинных формул с множест­
вом критериев. Когда список критериев велик, удобнее использовать формулы массивов.
К примеру, следующая формула массива вернет тот же результат, что и предыдущая:

{= С У М М ( ( М е с я ц = " Я н в а р ь " ) * Е С Л И ( ( П р е д с т а в и т е л ь = " Д а н и л к и н " )+
(Представитель = "К у к и н а " ) ; 1 ) ) }

Подсчет наиболее часто встречающихся записей

Функция МОДА возвращает значение, наиболее часто встречающееся в диапазоне яче­
ек. На рис. 7.3 показан рабочий лист, содержащий диапазон ячеек А1:А10 (с именем
Диапазон1). Формула, приведенная ниже, возвращает значение 10, поскольку это зна­
чение в данном диапазоне ячеек встречается наиболее часто.

= М 0 Д А (Д и а п а з о н 1 )

Эта формула возвращает значение #Н/Д, если диапазон, указанный в ее аргументе, не
содержит дублирующихся значений.

Рис. 7.3. Функция м о д а возвращает значе­
ние, встречающееся наиболее часто в задан­
ном диапазоне ячеек

200 Часть II. Использование функций в формулах

Чтобы подсчитать количество наиболее часто встречающихся в заданном диапазоне
значений (иными словами, частоту моды), воспользуйтесь следующей формулой:
=СЧЁТЕСЛИ(Д и а п а з о н 1 ; МОДА(Д и а п а з о н 1 ))

Представленная формула возвращает значение 3, поскольку значение моды (10)
встречается в диапазоне Д и а п а зо н 1 три раза.

Имейте в виду, что функция МОДА работает только с числовыми значениями. В том
случае, если заданная ячейка содержит текст, функция ее игнорирует. Для того чтобы
найти текстовую строку, наиболее часто встречающуюся в заданном диапазоне, исполь­
зуйте формулу массива.

Чтобы подсчитать количество элементов, наиболее часто встречающихся в заданном
диапазоне Данные (речь идет и о тексте, и о числовых значениях), используйте следую­
щую формулу массива:
{ =МАКС(СЧЁТЕСЛИ(Данные; Данные) ) }

Представленная ниже формула массива работает подобно функции МОДА, за исклю­
чением того, что в данном случае могут использоваться как числовые, так и текстовые
значения.
{ =ИНДЕКС(Данные; ПОИСКПОЗ(МАКС(СЧЁТЕСЛИ(Данные; Д ан н ы е)) ;
СЧЁТЕСЛИ(Данные/Данные);0))}

Предупреждение

Если существует несколько значений, встречающихся с одинаковой макси­
мальной частотой, данная формула вернет первое из них.

Подсчет количества вхождений заданного текста

В этом разделе продемонстрированы различные способы подсчета количества экзем­
пляров определенной строки символов или текстовой строки в заданном диапазоне яче­
ек. Все примеры данного раздела приведены для рабочего листа, показанного на рис. 7.4,
который в диапазоне ячеек A I : А10 (диапазон с именем Д и а п а зо н 2 ) содержит различ­
ную текстовую информацию. Ячейка В1 отображает искомую фразу (диапазон Т ек ст).

Рис. 7.4. На этом рабочем листе продемонстрированы различные способы под­
счета символов в диапазоне

Компакт-диск

Рабочую книгу, показанную на рис. 7.4, можно найти на прилагаемом компакт-
диске в файле c o u n t i n g t e x t i n a r a n g e . x l s x ( C h a p t e r 0 7 _ R U S . x l s x ) .

Глава 7. Способы суммирования и подсчета данных 201

Содержимое всей ячейки
Чтобы подсчитать количество ячеек, которые содержат только значение, введенное

в ячейку Т е к с т (и не содержат никаких других символов), воспользуйтесь функцией
СЧЁТЕСЛИ. Для этого создайте следующую формулу:
=СЧЁТЕСЛИ(Д и а п а з о н 2 ; Т е к с т )

Например, если ячейка Т е к с т содержит текстовую строку "Альфа", формула возвра­
щает значение 2, поскольку этот текст находится в двух ячейках диапазона Д и а п а з о н 2 .
Обратите внимание, что данная формула не учитывает регистр символов и воспринимает
содержимое ячеек А2 и А10 как идентичные текстовые строки. В то же время содержимое
ячейки А8 данная формула игнорирует.

Следующая формула массива подобна предыдущей, за исключением того, что учиты­
вается регистр символов:
{=СУММ(ЕСЛИ(СОВПАД(Диапазон2;Текст);1))}

Часть содержимого ячейки
Чтобы подсчитать количество ячеек, которые содержат строку, включающую в себя

строку ячейки Т е к с т в качестве подстроки, используйте следующую формулу:
=СЧЁТЕСЛИ(Д и а п а з о н 2 ; " * " &Текст&"*")

Например, если в ячейке Т е к с т находится текст Альфа, данная формула возвращает
значение 3, поскольку в диапазоне Д и а п а з о н 2 текст Альфа присутствует в трех ячей­
ках: А2, А8 и А 10. Обратите внимание, что регистр в данном случае не учитывается.

Альтернативная формула массива, использующая функцию НАЙТИ, немного длиннее:

{=СУММ(ЕСЛИ(НЕ(ЕОШИБКА(ПОИСК(Т е к с т ; Д и а п а з о н 2 ) ) ) ; 1 ) )}

Функция ПОИСК возвращает ошибку, если искомый текст не найден. В приведенном
примере подсчитываются все ячейки, в которых не была сгенерирована ошибка. Так как
функция ПОИСК не чувствительна к регистру символов, то же можно сказать и о формуле.

Если нужно подсчитать вхождения с учетом регистра символов, можете использовать
следующую формулу массива:
{=СУММ(ЕСЛИ(ДЛСТР(Диапазон2) -ДЛСТР(ПОДСТАВИТЬ(Диапазон2;
Т е к с т ; "") ) > 0 ;1 ) ) }

Если ячейка Т е к с т содержит слово "Альфа", предыдущая формула возвращает значе­
ние 2, поскольку данная текстовая строка встречается в двух ячейках диапазона (А2 и А8).

Подобно функции ПОИСК, функция НАЙТИ возвращает ошибку, если искомый текст
не найден. Таким образом, альтернативную версию предыдущей формулы можно запи­
сать в следующем виде:

{=СУММ(ЕСЛИ(НЕ(ЕОШИБКА(НАЙТИ(Текст;Диапазон2)) ) ; 1 ) )}

В отличие от ПОИСК, функция НАЙТИ различает регистр символов.

Общее количество экземпляров строки в заданном диапазоне
Чтобы подсчитать общее количество экземпляров строки в заданном диапазоне ячеек,

используйте следующую формулу массива:
{=СУММ(ДЛСТР(Диапазон2)) -СУММ(ДЛСТР(ПОДСТАВИТЬ(Диапазон2;
Текст; " " ) ) ) ) /ДЛСТР(Т екст)}

Если ячейка Т е к с т содержит символ Б, данная формула возвращает значение 7 —
этот символ есть в семи ячейках заданного диапазона. Имейте в виду, что эта формула

202 Часть II. Использование функций в формулах

учитывает регистр символа. Чтобы игнорировать регистр, используйте следующую из­
мененную формулу массива:
{ = (СУММ(ДЛСТР(Диапазон2)) -СУММ(ДЛСТР(
ПОДСТАВИТЬ(ПР0ПИСН(Диапазон2);
ПРОПИСН(Текст); " " ) ) ) ) /ДЛ С ТР(Текст)}

Подсчет количества уникальных значений

Следующая формула массива возвращает количество уникальных значений в диапа­
зоне И н т е р в а л :
{=СУММ(1/СЧЁТЕСЛИ(Интервал/Интервал))}

Для полного понимания того, как работает эта формула, вам необходимо усвоить ос­
новные принципы работы формул массива, о которых речь пойдет в главе 14. На рис. 7.5
показан рабочий лист, содержащий два диапазона ячеек: диапазон А 1 :А12 (И н т е р в а л )
и диапазон С 1:С 12 , во все ячейки которого включена следующая формула массива:
(одна формула скопирована во все 12 ячеек диапазона):
{=СЧЁТЕСЛИ(Интервал/Интервал)}

Рис. 7.5. Использование формулы массива для подсчета уникальных
значений в диапазоне

Компакт-диск

Рабочую книгу, показанную на рис. 7.5, можно найти на прилагаемом ком­
пакт-диске в файле c o u n t u n i q u e . x l s x (C h a p ter0 7 _ R U S . x l s x ) .
Массив в диапазоне C l : C l 2 содержит итоги, подсчитанные для каждого значения
в массиве И н т е р в а л . Например, число 100 появляется в массиве И н т е р в а л три раза.
Таким образом, каждый элемент массива С 1:С 12, соответствующий значению 100
в диапазоне Данные, будет содержать значение 3.
Диапазон D1 :D12 отображает результаты следующей формулы массива:
{=1/C l:С12}
Данный массив состоит из значений, полученных путем деления 1 на значения мас­
сива в диапазоне ячеек C l : С12. Например, если какая-либо ячейка исходного диапазона
И н т е р в а л содержит значение 2 00, то соответствующая ей ячейка в диапазоне D l : D12
будет иметь значение 0 ,0 5 .

Глава 7. Способы суммирования и подсчета данных 203

Суммирование значений диапазона D1 :D12 дает число одинаковых элементов, содержа­
щихся в массиве И н тер вал . По существу, формула, приведенная в начале этого раздела, соз­
дает массив значений в диапазоне ячеек D l : D12 и суммирует значения этого массива.

Однако эта формула имеет серьезное ограничение: в том случае, если диапазон со­
держит пустые ячейки, формула возвращает ошибку. Приведенная ниже формула масси­
ва решает эту проблему.

{=СУММ(ЕСЛИ(СЧЁТЕСЛИ(Интервал; И н т ер ва л ) = 0 ; " " ;
1/СЧЁТЕСЛИ(Интервал;И нтер вал )) ) }

Ф Перекрестная ссылка

Создание формулы массива, возвращающей список одинаковых значений
в заданном диапазоне ячеек, описано в главе 15.

Распределение частот

Главным компонентом процедуры распределения частот является итоговая таблица,
которая отображает частоту повторения значений в заданных интервалах. Например,
преподаватель школы или ВУЗа может создать распределение частот экзаменационных
оценок, т.е. таблицу, в которой отображается количество значений 1, 2, 3 и т.д. Чтобы
создать распределение частот, воспользуйтесь одним из следующих инструментов, кото­
рые Excel предоставляет в ваше распоряжение:

• функция ЧАСТОТА;

• собственная формула;

• надстройка “Пакет анализа”;

• сводная таблица.

Компакт-диск

Рабочую книгу, демонстрирующую использование всех четырех методов
создания распределения частот, можно найти на прилагаемом компакт-
диске в файле f r e q u e n c y d i s t r i b u t i o n . x l s x ( C h a p t e r 0 7 _ R U S . x l s x ) .

Примечание ч

Если данные представлены в форме базы данных, для создания распреде­
ления частот можно также использовать сводную таблицу.

Функция ЧАСТОТА

Самый простой способ создания таблицы распределения частот в приложении
Excel— использование функции ЧАСТОТА. Эта функция возвращает массив, поэтому
она всегда должна применяться в формуле массива, введенной в диапазон ячеек.

На рис. 7.6 в диапазон ячеек A i : Е 20 ( Д и а п а з о н З ) введены значения от 1 до 5 0 0 .
Диапазон G2 :G11 задает уровни дискретизации (интервалы), используемые в распреде­
лении частот. Каждая ячейка этого диапазона представляет собой верхний предел интер­
вала. В данном случае используются интервалы 1-50, 51-100, 101-150 и т.д. Более про­
стой способ создания интервалов рассматривается далее.

204 Часть II. Использование функций в формулах

Рис. 7.6. Создание интервалов для распределения частот для
диапазона ячеек a i :Е2 о
Чтобы создать график распределения частот, выберите диапазон ячеек, значения
в которых соответствуют интервалам. После чего введите следующую формулу массива:
{ =ЧАСТОТА(ДиапазонЗ;G2:G11) ) }
Приведенная формула массива подсчитывает количество значений в диапазоне
Д и ап азон З , которые попадают в каждый интервал. Чтобы представить распределение
частот в виде процентной зависимости, используйте следующую функцию:
{ =ЧАСТОТА(ДиапазонЗ;G2:G10 ) /СЧЁТ(ДиапазонЗ)}
На рис. 7.7 показаны два варианта распределения частот: один в виде числовых зна­
чений, а другой — в процентах. Кроме того, на рис. 7.7 показана диаграмма (или гисто­
грамма), созданная на основе полученного распределения частот.

Рис. 7.7. Распределение частот, вычисленное с помощью функции частота


Click to View FlipBook Version