ПОИСК
Категории книг
ОПРОС
Вопрос: Какой язык программирования вы предпочитаете
С/C++
Delphi
Visual Basic
Perl
Java
PHP
ASP
Другой
ЭТО ПОЛЕЗНО!
ОБРАТНАЯ СВЯЗЬ

/ Главная / Офисные программы / Иллюстрированный самоучитель по Excel 2002
Иллюстрированный самоучитель по Excel 2002

Определение выходных дней в табеле

Для определения выходных дней (суббот и воскресений) воспользуйтесь функцией ДЕНЬНЕД, которая устанавливает номер дня недели. Эту функцию введите в ячейку С28:

=ДЕНЬНЕД(С9)

В следующую ячейку - С29 - введите функцию ЕСЛИ:

=ЕСЛИ(С28=7;ИСТИНА;ЕСЛИ(С28=1;ИСТИНА;ЛОЖЬ))

Функция ЕСЛИ действует по описанной ниже схеме:
- День недели, определенный в ячейке С28, - суббота?
- Если да, возвращается значение ИСТИНА.
- Если нет, переходим к следующему ЕСЛИ.
- Если днем недели является воскресенье, возвращается значение ИСТИНА.
- В противном случае возвращается значение ЛОЖЬ.

Учет выходных и праздничных дней

На следующем этапе нам предстоит создать формулу, которая при соблюдении одного из условий (праздничный день, выходной день или праздничный день, выпадающий на выходной) возвращает значение ИСТИНА. Мы предполагаем разместить эту формулу в ячейке СЗО.

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

Функция ИЛИ имеет следующий синтаксис:
ИЛИ(логическое_значение1;логическое_значение2; ...)

Здесь логииеское_значение1, логическое_значение2, ... - это от 1 до 30 проверяемых условий, которые могут иметь либо значение ИСТИНА, либо значение ЛОЖЬ.

Рис. 7.12. Панель функции ИЛИ

В первом аргументе нам необходимо указать адрес ячейки С29, в которой определяется день недели, а во втором аргументе - адрес ячейки С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 табеля.

Рис. 7.13. Список с перемещенными датами

Скопируйте ее из строки формул, вставьте в ячейку С31, замените имя Да-таПраздн именем ДатаПеренос и удалите функцию НЕ.

Результирующая формула в ячейке С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.



Компьютерные книги © 2006-2013
computers.plib.ru