В двухстрочном табеле для каждого сотрудника отводятся две строки: в нижней указывается количество часов, отработанных в ночное время, а верхняя предназначена для ввода остальных данных. Следует отметить, что наличие нескольких строк усложняет установление связи с базой данных, то есть дальнейшее копирование строк с формулами. Тем не менее на практике существуют случаи применения трех- и даже четырехстрочных табелей.
Для вставки имени нужно выделить в формуле адрес ячейки и выполнить команду Вставка/Имя/Вставить или нажать клавишу [F3]. В результате появится диалоговое окно Вставка имени (рис. 7.6), в котором следует выбрать нужное имя, а затем нажать кнопку ОК.
На практике существует множество разновидностей табелей, вряд ли вам удастся встретить одинаковые табели на разных предприятиях. Табель разрабатывается специалистами предприятия и тиражируется на копировальных аппаратах для дальнейшей обработки информации об использовании рабочего времени. Как правило, заполнение табеля выполняется вручную. Только после этого информация попадает в компьютер для последующих расчетов. Такая организация учета требует дополнительного времени, и чем больше предприятие, тем значительнее потери.
Структура однострочного табеля (область ввода и расчетная область) показана на следующих двух рисунках.
В формуле используется функция СУММЕСЛИ. Эта функция аналогична функции СУММСЧЕТ, но последняя подсчитывает количество ячеек, которые соответствуют заданному критерию, а функция СУММЕСЛИ суммирует значения ячеек, если их содержимое соответствует указанному критерию. Проанализируем синтаксис функции СУММЕСЛИ:
СУММЕСЛИ(интервал;критерий;сумм_интервал)
Здесь интервал - это диапазон ячеек, задействованных в вычислениях, а критерий может быть числом, выражением или текстом, по которому программа определяет, следует ли добавлять содержимое данной ячейки.
Аргумент сумм_интервал - это фактические ячейки для суммирования. В диапазоне сумм_интервал суммируются только те ячейки, которые находятся в той же строке или столбце, что и ячейки, заданные в аргументе интервал и удовлетворяющие критерию. Если аргумент сумм_интервал опущен, суммируются значения ячеек, заданных аргументом интервал.
Итак, в ячейке D5 рабочего листа Табель формула должна иметь такой вид:
=ВПР(Месяц;Праздники!В30:С41;2;ЛОЖЬ)
а в ячейке D6 - такой:
=ВПР(Месяц;Праздники!В30:D41;3;ЛОЖЬ)
В процессе вычисления представленных формул на основе названия месяца, введенного в ячейке ААЗ рабочего листа с однострочным табелем, производится поиск названия месяца на рабочем листе Праздники, после чего возвращается нормативное количество рабочих часов либо число календарных дней.
В следующую ячейку - С29 - введите функцию ЕСЛИ:
=ЕСЛИ(С28=7;ИСТИНА;ЕСЛИ(С28=1;ИСТИНА;ЛОЖЬ))
Функция ЕСЛИ действует по описанной ниже схеме:
- День недели, определенный в ячейке С28, - суббота?
- Если да, возвращается значение ИСТИНА.
- Если нет, переходим к следующему ЕСЛИ.
- Если днем недели является воскресенье, возвращается значение ИСТИНА.
- В противном случае возвращается значение ЛОЖЬ.
Учет выходных и праздничных дней
На следующем этапе нам предстоит создать формулу, которая при соблюдении одного из условий (праздничный день, выходной день или праздничный день, выпадающий на выходной) возвращает значение ИСТИНА. Мы предполагаем разместить эту формулу в ячейке СЗО.Для решения задачи воспользуемся логической функцией ИЛИ. Эта функция возвращает значение ИСТИНА, если хотя бы один из ее аргументов имеет значение ИСТИНА, и значение ЛОЖЬ, если все аргументы имеют значение ЛОЖЬ.
Функция ИЛИ имеет следующий синтаксис:
ИЛИ(логическое_значение1;логическое_значение2; ...)
Здесь логииеское_значение1, логическое_значение2, ... - это от 1 до 30 проверяемых условий, которые могут иметь либо значение ИСТИНА, либо значение ЛОЖЬ.
Табель обычно включает такие реквизиты, как цех (отдел), бригада, фамилия, имя, отчество, профессия (должность), табельный номер и т. д.
При использовании электронного табеля работа автоматизируется за счет ввода соответствующих формул в ячейки, где должны производиться вычисления.
Учет использования рабочего времени в табеле осуществляется либо методом сплошной регистрации, согласно которому для каждого лица фиксируется время прибытия, опоздания и т. д., либо путем регистрации отклонений (опозданий, неявок и т. п.).
Для учета того, как используется рабочее время служащими всех категорий, для контроля за соблюдением ими установленного режима, с целью получения данных об отработанном времени, для расчета заработной платы, составления отчетов о проделанной работе применяются типовые формы табелей, разработанные государственными органами (например, министерством статистики).
Расчет отработанного времени в часах
Сумма отработанных часов определяется в ячейке АПЗ с помощью следующей формулы:В данном случае мы производим суммирование значений, указанных в диапазоне C12:AG12 (первая строка для первого служащего).
В последней формуле логическая функция ЕСЛИ сравнивает общее количество дней, полученных в области AJ9:AM9, с количеством календарных дней в данном месяце, указанным в ячейке D6. Если условие выполняется, выдается общее количество дней, иначе - текст Ошибка!. Ошибка также может быть связана с некорректным вводом данных (например, вместо числового значения или принятых букв "от", "б" и "в" могут быть введены любые другие символы).
Если работник уволен или принят на работу в текущем месяце
В созданном нами электронном табеле нельзя автоматически определить количество рабочих дней для сотрудников, отработавших неполный месяц по той причине, что они в этом месяце уволены или только приняты на работу. Такую возможность можно обеспечить, модернизировав формулу в ячейке AN9.
В табель следует ввести еще одно текстовое обозначение - "ув". Если количество дней, указанных в области AJ9AM9, и количество дней, которые работник не числился на предприятии, не равны количеству календарных дней, выдается сообщение Ошибка!. После внесения изменений формула в ячейке AN9 примет такой вид:
=ЕСЛИ(СУММ(Аа9:АМ9)+СЧЕТЕСЛИ(Е9:AI9;"ув"}-
SDS6;СУММ(AJ9:АМ9);"Ошибка!")

Указание в формулах только адресов ячеек с этими параметрами усложняет создание и понимание формул. В Excel предусмотрена возможность присвоения имен как ячейкам, так и целым диапазонам. В частности, целесообразно назначать имена ячейкам, предназначенным для указания года, месяца и числа месяца.
Для присвоения имени ячейке, в которую введено название месяца, поместите табличный курсор в ячейку AF3 и активизируйте команду Вставка/Имя/Присвоить или нажмите комбинацию клавиш [Ctrl+F3]. В результате отобразится диалоговое окно Присвоение имени (рис. 7.2). Введите в соответствующее поле имя (например, Месяц). В поле Формула будет сформирована запись, указывающая, какой ячейке присваивается имя:
=Табель!$АF$3
Завершите операцию присвоения имени нажатием на кнопку ОК и закройте диалоговое окно.


Расчет отработанного времени в днях
Количество отработанных дней определяется в ячейке AL13:Формула создана на основе функции СЧЕТЕСЛИ (см. главу 5, рис. 5.3), которая подсчитывает количество ячеек внутри интервала, удовлетворяющих заданному критерию. Критерием могут служить как цифры (количество отработанных часов), так и буквы (рассмотренные выше условные обозначения, такие как "от" - отпуск, "б" - дни временной нетрудоспособности и т. д.). Формула, приведенная в качестве примера, предназначена для подсчета количества ячеек, в которые введены цифры.
Количество дней, проведенных служащим в командировке, подсчитывается в ячейке AM13 (рис. 7.4):
=СЧЕТЕСЛИ(С12:АG12;"к")
Критерием является буква "к", которая вносится в табель, если работник находится в командировке.
Подсчет дней, в течение которых работник был в отпуске, производится в ячейке AN13:
=СЧЕТЕСЛИ(С12:АG12;"от")
Количество дней учебного отпуска определяется в ячейке АO13:
=СЧЕТЕСЛИ(С12:AG12;"у")
Подсчет дней, в течение которых работник болел, производит формула в ячейке АР13:
=СЧЕТЕСЛИ(С12:AG12;"б")
Количество дней, в течение которых работник отсутствовал на работе без уважительных причин, подсчитывается с помощью формулы из ячейки AQ13:
=СЧЕТЕСЛИ(С12:AG12;"п")
Счет праздничных и выходных дней ведется в ячейке AR13:
=СЧЕТЕСЛИ(С12:AG12;"в")
Наконец, общее количество протабелированных дней определяется в ячейке AS 13 с помощью такой формулы:
=СУММ(АL13:АR13)

Формирование дат праздников
Для определения чисел, на которые приходятся выходные дни, суббота и воскресенье, можно воспользоваться функциями Excel. А вот чтобы компьютер мог установить, какой день праздничный, а какой нет, он должен иметь соответствующую информацию.Введем даты праздников в нашу рабочую книгу на отдельном листе, которому присвоим имя Праздники. Дату праздников можно указать в формате Excel. Однако существуют праздники, которые каждый год приходятся на разные даты (к этой категории принадлежат Пасха и Троица). Если праздник выпадает на выходной день, то выходной переносится на следующий будний день. Поэтому перенесенный выходной тоже может быть представлен как праздник.
Итак, наименования праздников введите в ячейки столбца В. Месяцы и дни укажите раздельно (в столбцах С и D), а номер текущего года - в ячейке С2 (рис. 7.5).

В результате этих наших действий все даты (в формате Excel), на которые припадают праздники, будут расположены в диапазоне ячеек G3:G14. Выделите этот диапазон и присвойте ему имя ДатаПраздн.

Формула в ячейке С9 приобретет вид
=ДАТА(Год;ЕСЛИ(Месяц="Январь";1;ЕСЛИ(Месяц="Февраль";2;
ЕСЛИ(Месяц="Март";3;ЕСЛИ(Месяц="Апрель";4;С8))));День)
Теперь в ячейке С9 должна формироваться дата в формате Excel. Например: 1 января 2002 года - 01.01.02.
Скопируйте формулы из ячеек С8 и С9 в диапазон C8:AG9.


Функция ВПР ищет значение, заданное в первом аргументе, в крайнем левом столбце диапазона, указанного во втором аргументе.
Возвращает она значение из той же строки, но находящееся в столбце, который задан в третьем аргументе.
Синтаксис функции имеет такой вид:
ВПР(искомое_значение;инфо_таблица;
номер_столбца;интервальный_просмотр)
Здесь искомое_значение - это искомое значение. Им может быть число, ссылка или текстовая строка. Аргумент инфо_таблица - это таблица, в которой производится поиск данных. Значения в первом ее столбце могут быть текстовыми строками, числами или логическими значениями. Регистр при поиске не учитывается (то есть строчные и заглавные буквы не различаются). Аргумент номер_ столбца - это номер столбца в диапазоне инфо_таблица, из которого выбирается возвращаемое значение. Аргумент интервальный_просмотр - это логическое значение, которое определяет, должна ли функция ВПР искать точное соответствие. Если он не задан, то ищется точное соответствие. При отсутствии искомого значения возвращается ошибка #H/Д
Сначала создадим в произвольном месте листа ряд простых формул, осуществляющих поиск даты и анализ полученной информации. Затем мы произведем операцию вложения формул и перенесем результирующую формулу в область табеля. Начнем с ячейки С25.
1. Активизируйте ячейку С25 и отобразите панель функции ВПР (рис.7.9).
2. Убедитесь в том, что курсор установлен в поле Искомое_значение, и выделите ячейку С9.
3. Поместите курсор в поле Табл_массив.
4. Ввод имени диапазона ДатаПраздн в поле панели функций можно произвести с клавиатуры или в диалоговом окне Вставка имени. Для вызова диалогового окна следует выполнить команду Вставка/Имя/Вставить или нажать функциональную клавишу [F3]. Выделите в поле Имя элемент ДатаПраздн и нажмите кнопку ОК.
5. В поле Номер_индекса_столбца введите значение 1, а в поле Диапазон_просмотра - значение ЛОЖЬ.
6. В завершение нажмите кнопку ОК.
Результат поиска может оказаться некорректным, если диапазон ячеек, указанный в функции ВПР, находится на другом рабочем листе. Поэтому желательно действовать следующим образом:
- В поле Табл_массив окна функции ВПР введите ссылку на диапазон Праздники!$С$3:$С$18:
  =ВПР (С9;Праздники!SC53:$C$18;1;ЛОЖЬ)
- После ввода формулы присвойте диапазону Праздники!$С$3:$С$18 имя ДатаПраздн.
- Активизируйте ячейку С26 и замените в формуле адрес диапазона соответствующим именем.
Формула в ячейке С25 будет следующей:
=ВПР(С9;ДатаПраздн;1;ЛОЖЬ)
Если функция ВПР не найдет в списке с праздниками указанную дату, она выдаст ошибку #Н/Д. Это значение попадет в последующие формулы, и они, в свою очередь, также возвратят ошибку #Н/Д. Нам же нужно получить либо значение ИСТИНА, если день, указанный в табеле, является праздничным, либо значение ЛОЖЬ, если этот день не числится в списке праздников.
Избавиться от ошибки #Н/Д позволяет функция ЕНД (рис. 7.10), которая принадлежит к категории Проверка свойств и значений. Данная функция возвращает значение ИСТИНА, если значение предыдущих вычислений является ошибочным. Функция ЕНД имеет такой синтаксис:
ЕНД(Значение)

Однако ее результат нас не совсем устраивает. Нам нужно, чтобы в случае отсутствия даты в списке праздников возвращалось значение ЛОЖЬ, а не ИСТИНА.
Поэтому воспользуемся логической функцией НЕ (рис. 7.11), которая относится к категории Логические и имеет следующий синтаксис:
НЕ(логическое_значение)
Здесь логическое_значение - это значение или выражение, в результате вычисления которого получается значение ИСТИНА или ЛОЖЬ. Если параметр логиче-ское_значение имеет значение ЛОЖЬ, функция НЕ возвращает значение ИСТИНА, в противном случае данная функция возвращает значение ЛОЖЬ.
Активизируйте ячейку С27 и загрузите панель функции НЕ. Укажите в поле Флаг панели адрес ячейки С26. Вот формула, которая должна быть в ячейке С27:
=НЕ(С26)
Проанализируем созданные формулы. Если дата в формате Excel, указанная в ячейке С9, найдена в списке праздников на рабочем листе Праздники, ячейка С27 будет содержать значение ИСТИНА. Когда дата не найдена, функция ВНР возвращает значение #Н/Д, а функция ЕНД исправляет ошибку, выдавая значение ИСТИНА. Функция НЕ инвертирует это значение, вследствие чего мы получим в ячейке С27 значение ЛОЖЬ.


Формула в ячейке СЗО должна быть такой:
=ИЛИ(С29;С27)
Произведем вложение функций:
- Формулу из ячейки С25 вложим в формулу из ячейки С26:
   =ЕНД(ВПР(С9;ДатаПраздн;1;ЛОЖЬ))
- Полученную формулу вложим в формулу из ячейки С27:
   =НЕ(ЕНД(ВПР(С9;ДатаПраздн;1;ЛОЖЬ)))
-Формулу из ячейки С28 вложим в формулу из ячейки С29:
   =ЕСЛИ(ДЕНЬНЕД(С9)=7/ИСТИНА;ЕСЛИ
(ДЕНЬНЕД(С9)=1;ИСТИНА;ЛОЖЬ))
- Полученную формулу вложим в формулу из ячейки СЗО:
   =ИЛИ(ЕСЛИ(ДЕНЬНЕД(С9)=7;:ИСТИНА;
ЕСЛИ(ДЕНЬНЕД(С9)=1;ИСТИНА;ЛОЖЬ)) ;С27)
Перенос выходных дней
На практике нередки случаи переноса выходных дней. В нашем табеле реакция на такие переносы не обеспечена. Сейчас мы исправим этот недостаток. Даты дней, которые вследствие переноса стали рабочими, будем вводить в область G22:G24 листа Праздники. Этой области присвоим имя ДатаПеренос (рис. 7.13).Даты дней, которые вследствие переноса стали выходными, добавим в список праздников, находящийся в диапазоне A15:G16 листа Праздники (рис. 7.5).
Теперь в табеле нам нужна формула, которая будет определять, не перенесен ли данный выходной. Для ее получения доработаем формулу из ячейки С27 табеля.

Результирующая формула в ячейке С31 должна иметь следующий вид:
=ЕНД(ВПР(С9;ДатаПеренос;1;ЛОЖЬ))
Формула возвращает значение ЛОЖЬ, если находит дату среди перенесенных, или значение ИСТИНА, если не находит. Таким образом, эта ячейка будет содержать значение ЛОЖЬ, если день вследствие переноса стал рабочим. Если же ячейка содержит значение ИСТИНА, значит, статус дня не изменился.
Теперь мы должны проанализировать значения ячеек С3О и С31. Первая содержит логическое значение, которое указывает на то, является ли день выходным либо праздничным. Логическое значение во второй ячейке отражает факт изменения статуса дня (то есть не стал ли он вследствие переноса выходных рабочим днем).
Формула для анализа должна работать так. День является выходным, если его статус не изменился (С31 содержит значение ИСТИНА), и он является праздничным, субботним или воскресным (СЗО содержит значение ИСТИНА). Во всех остальных случаях день будет рабочим.
Составить такую формулу можно с помощью функции И. Она возвращает значение ИСТИНА, если все аргументы имеют значение ИСТИНА, и значение ЛОЖЬ, если хотя бы один аргумент имеет значение ЛОЖЬ. Данная функция принадлежит к категории Логические и имеет следующий синтаксис:
И(логическое_значение1;логическое_значение2; ...)
Здесь логическое_значение1, логическое_значение2, ... - это от I до 30 проверяемых условий, которые могут иметь либо значение ИСТИНА, либо значение ЛОЖЬ.
Введите в ячейку С32 такую функцию:
=И(С30;С31)
В данную функцию надлежит вложить формулы из ячеек СЗО и С31. Ниже показано, как выглядит результирующая формула в ячейке С32:
=И(ИЛИ(ЕСЛИ(ДЕНЬНЕД(С9)=7; ИСТИНА;
ЕСЛИ(ДБНЬНЕД(С9)=1;ИСТИНА;ЛОЖЬ));С27);
ЕНД(ВПР(А9;ДатаПеренос;1;ЛОЖЬ)))
Скопируйте формулы из ячеек С27 и С32 в ячейки С10 и С11.








Автоматический ввод Ф.И.О.
Формула в ячейке В9 (рис. 7.21) возвращает фамилию, которая находится в ячейке С2 рабочего листа Сотрудники, и инициалы, которые берутся из ячеек D2 и Е2. Она также обеспечивает расстановку между ними пробелов и точек:Действие этой формулы сводится к следующему: из базы данных извлекается полная фамилия, а от имени и отчества отсекаются первые буквы, после которых ставятся точки. Кроме того, перед отчеством (или после имени) добавляется пробел.
Введем сначала простые формулы, которые впоследствии будут соединены. В ячейке В10 должна находиться формула, которая будет извлекать фамилию:
=[База.xls]Сотрудники!С2
Первую букву имени поместим в ячейку ВИ. Для этого занесем в нее такую формулу:
=ЛЕВСИМВ([База.xls]Сотрудники!D2;1)
ПРИМЕЧАНИЕ
Из панели функций можно сослаться на другие листы или книги точно так же, как из ячеек. Для этого достаточно поместить курсор в поле ввода панели функций и выделить ячейку на другом листе или в другой книге.В ячейку В12 введите формулу, приведенную ниже. Она будет извлекать первую букву отчества.
=ЛЕВСИМВ([База.xls]Сотрудники!Е2;1)
Перейдите в ячейку В9 и, вызвав функцию СЦЕПИТЬ, установите ссылки на эти ячейки. Затем замените ссылки формулами, которые находятся в ячейках.

Данные о сотрудниках (фамилии и табельные номера) могут быть введены одним из трех способов:
- с клавиатуры;
- путем копирования из других электронных документов (например, из табеля за прошлый месяц);
- с помощью формул, позволяющих взять информацию из других таблиц.
Третий способ будет рассматриваться при создании однострочного табеля. Сейчас же мы предполагаем, что данные вводятся с клавиатуры.
Процесс форматирования рассматривался в предыдущих главах и не должен вызвать затруднений.
Для столбцов C:AG необходимо подобрать такую ширину, чтобы в строке 6 дни месяца отображались полностью как на экране монитора, так и при выводе на печать. Для достижения желаемого результата выделите столбцы C:AG и поэкспериментируйте с полем Ширина столбца одноименного диалогового окна.
Обеспечить максимальное удобство работы с табелем можно за счет удаления с экрана его отдельных элементов. Так, после ввода формул желательно скрыть строки 7:11, чтобы они не портили вид табеля. Для этого выделите строки 7:11, откройте контекстное меню и активизируйте в нем команду Скрыть. Аналог указанного средства - команда Формат/Строка/Скрыть. Подобным образом отменяется и отображение столбцов.
Восстановить отображение скрытых элементов, столбцов и строк, несложно. Достаточно выделить столбцы или строки, граничащие со скрытыми, и, вызвав контекстное меню, активизировать команду Отобразить. Альтернативный способ - выполнение команды Формат/Столбец (Строка)/Отобразить.
Связывание книг
Вы уже знаете, что при вводе формул образуются зависимые и влияющие ячейки. На ход расчетов может повлиять содержимое других ячеек - при наличии в формуле ссылок на них. Цель создания ссылок заключается в использовании содержащейся в ячейках информации. Рассматривавшиеся ранее таблицы размещались на одном рабочем листе. Если же ячейку, содержащую ссылку, перенести на другой лист или в другую книгу, ссылка не разорвется и мы получим связанные посредством формул рабочие листы или книги.Таким образом, вместо копирования данных из одной книги в другую можно просто создавать ссылки на ячейки другой книги. Воспользуемся этим методом для ввода в табель фамилий и табельных номеров работников.
Для удобства при создании связи между файлами (книгами) разместим их в одной папке. Создайте папку под названием Табель и поместите в нее файлы Табель и База (с базой данных сотрудников).
Заполнение ячеек с названиями должностей и табельными номерами
Название должности каждого работника будет извлекаться из книги База. Реализуется это следующим образом:Ссылка между открытыми книгами имеет такую структуру:
[Имя_книги]Имя_листа!Адрес_ячейки
После закрытия книги, с которой установлена связь, ссылка изменится: в ней будет указан полный путь, по которому находится исходная информация:
='С:\Отдел кадров\Табель\[База.xls]Сотрудники'!В2
ПРИМЕЧАНИЕ
При наличии пробелов в именах листов, книг или папок весь путь автоматически заключается в одинарные кавычки.Для создания ссылки на ячейку другой книги путь можно набрать с клавиатуры, но это занимет много времени. Преимущество данного метода лишь в том, что нет необходимости открывать книгу, с которой устанавливается связь.
Для получения ссылок на табельные номера и фамилии установим связь. Например, для ячейки С9 (табельный номер) выполните следующие действия:
1. Выделите диапазон ячеек С9:С18 и введите знак равенства.
2. Перейдите в книгу База и выделите ячейку В2.
3. Нажмите комбинацию клавиш [Enter+Ctrl].
В результате формула в ячейке С9 будет иметь такой вид:
= [База.xls]Сотрудники!В2
Аналогичными формулами будет заполнен весь диапазон ячеек С9:С18.