Страницы: 1
RSS
Почасовой табель, Помощь в изменении формулы
 
Добрый день!
Вопрос в следующем:

для составления ежедневного расписания пользуюсь формулой, которая сравнивает рабочие часы сотрудника и реальный час в сутках.
Например, у сотрудника рабочий день с 10 до 19, смотрим по формуле будет ли он работать в 12 часов:
=O2+ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;P$1&"-*")=1;СЧЁТЕСЛИ($C2;"0"&P$1&"-*")=1);1;0)-ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;"*-"&P$1)=1;СЧЁТЕСЛИ($C2;"*-0"&P$1)=1);1;0)
по формуле:
O2 - предыдущий час, т.е 11 часов. Внутри ячейки "11".
С2 - рабочий день сотрудника, внутри ячейки "10-19"
P1 - интересующий нас час. Внутри ячейки "12".

И вроде все прекрасно - если человек работает, то проставляется "1", если нет, то "0".
Но есть один нюанс.
Эта формула не работает, если часы работы сотрудника, например, с 19 до 1 часа ночи, в нерабочие часы она проставляет "-1". Условие должно быть единым для всего поля, поэтому нужно, чтобы формула была в едином формате.
Пока перебирал начальную формулу, сломал весь мозг, а тут вообще не пойму как быть.

Господа, подскажите, если есть идеи.
 
Во-первых: Файл пример, пожалуйста.
Во-вторых:
Цитата
xamer9 написал:
если человек работает, то проставляется "1", если нет, то "0".
Не вижу этого. Формула с указанными вами данными дает результат 12, если  P1 = 19,  10 если Р1 = 10, и 11 во всех остальных случаях. Соответственно не выполняет написанные выше вами условия
MS Office 2007,2010

ЛЕНЬ-двигатель прогресса!
 
Извиняюсь за неточность.
В ячейке O2 формула, которая рассчитывает данные предыдущего дня.
Поэтому там не 11, а 0, так как этот час работы не соответствует "10-19".
Постараюсь объяснить подробнее.

В начальное время - "0" часов - формула выглядит так:
Код
=ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;D$1&"-*")=1;СЧЁТЕСЛИ($C2;"0"&D$1&"-*"));1;0)

далее в "1" час формула такая:
Код
=(D2+ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;E$1&"-*")=1;СЧЁТЕСЛИ($C2;"0"&E$1&"-*")=1);1;0)-ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;"*-"&E$1)=1;СЧЁТЕСЛИ($C2;"*-0"&E$1)=1);1;0))

где D2 - значение формулы из "0" часов.
соответственно в 12 часов:
Код
=O2+ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;P$1&"-*")=1;СЧЁТЕСЛИ($C2;"0"&P$1&"-*")=1);1;0)-ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($C2;"*-"&P$1)=1;СЧЁТЕСЛИ($C2;"*-0"&P$1)=1);1;0) 

Может я слишком усложняю - мне просто важно понять как считать часы, которые расположены в обратном порядке.

Файл приложить, к сожалению, нет возможности сейчас, только если вечером. Как лучше?
 
Ну для начала моя формула (правда большая получилась)
Вставить в D2 и можно протянуть на все остальные до 23 часов
Код
=ЕСЛИ(И(D$1>=ПСТР($C2;1;НАЙТИ("-";$C2)-1)*1;D$1<ЕСЛИ(ПСТР($C2;1;НАЙТИ("-";$C2)-1)*1>ПСТР($C2;НАЙТИ("-";$C2)+1;10)*1;ПСТР($C2;НАЙТИ("-";$C2)+1;10)*1+23;ПСТР($C2;НАЙТИ("-";$C2)+1;10)*1));1;0)

По Вашей формуле ничего не приходит пока что в голову
MS Office 2007,2010

ЛЕНЬ-двигатель прогресса!
Страницы: 1
Наверх