Страницы: 1
RSS
Расчёт рабочих дней
 
доброго времени суток. Я сейчас изучаю excel интересным способом: у меня есть товарищ, гуру эксель. =) он даёт задачи, а я их решаю. В решениии помогают Google и всякие книжки. но есть вещи которых я просто не могу там найти. А каждый раз обращаться по "тупому" вопросу с товарищу тоже неудобно.
Сейчас я "встал" на такой вот задаче.
Есть 3 ячейки. 1 ячейка начальная дата (любая), 2 ячейка конечная дата (тоже любая). В 3 ячейке надо дать сумму рабочих дней между этими 2 датами. Однако выходные дни СРЕДА и СУББОТА или только СРЕДА.
Я так понимаю, что это надо сделать через формулу массивов и функции счётесли. Однако просто не понимаю, как можно из двух дат создать массив (двссыл тут не работает).

очень прошу помочь.

Чуть не забыл, для расчётов надо использовать только 1 ячейку.
Заранее спасибо.
 
Цитата
SanShiney пишет:
Однако выходные дни СРЕДА и СУББОТА или только СРЕДА
Как это понять?
С уважением,
Федор/Все_просто
 
вариант для "только СРЕДА"
Код
=СУММ(ЕСЛИ(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2&":"&B2));2)<>3;1;0))

для "СРЕДА и СУББОТА"
Код
=СУММ(ЕСЛИ(ОСТАТ(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2&":"&B2));2);3)>0;1;0))

формулы массива, конечно же.
Изменено: ikki - 21.07.2013 10:18:27
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
варианты, не требующие ввода как формулы массива
Код
=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2&":"&B2));2)<>3))
=СУММПРОИЗВ(--(ОСТАТ(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2&":"&B2));2);3)>0))
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Только для суббота. Думал не выкладывать, потому что слишком сложно, к тому же возможно присутствие багов. Вот моя формула:
Код
=ЕСЛИ(ДЕНЬНЕД(B2;2)-ДЕНЬНЕД(A2;2)>0;ЕСЛИ(И(6-ДЕНЬНЕД(B2;2)<=0;6-ДЕНЬНЕД(A2;2)>=0);ЦЕЛОЕ((B2-A2)/7)*6-1+ДЕНЬНЕД(B2;2)-ДЕНЬНЕД(A2;2);ЦЕЛОЕ((B2-A2)/7)*6+ДЕНЬНЕД(B2;2)-ДЕНЬНЕД(A2;2));
             ЕСЛИ(ДЕНЬНЕД(B2;2)=ДЕНЬНЕД(A2;2);ЦЕЛОЕ((B2-A2)/7)*6; ЕСЛИ(И(6>=ДЕНЬНЕД(A2;2);6<=ДЕНЬНЕД(B2;2)+7);ЦЕЛОЕ((B2-A2)/7)*6+ДЕНЬНЕД(B2;2)-ДЕНЬНЕД(A2;2)+6;ДЕНЬНЕД(B2;2)+7-ДЕНЬНЕД(A2;2))))
С уважением,
Федор/Все_просто
 
Цитата
SanShiney пишет:
у меня есть товарищ, гуру эксель.
Так почему бы не спросить у этого товарища?
 
среда:
Код
=B2-A2-((B2+(ДЕНЬНЕД(B2;2)>3)*7-3-ДЕНЬНЕД(B2;2))-(A2+7-ДЕНЬНЕД(A2;2)+4-(ДЕНЬНЕД(A2;2)<4)*7))/7-(B2-A2=1)
Цитата
Юрий М пишет:
почему
потому:
Цитата
SanShiney пишет:
А каждый раз обращаться по "тупому" вопросу с товарищу
"тупые" вопросы для нас :)
 
Ну да - к товарищу неудобно, а к нам удобно))
 
Для 2007 и выше (Ср и Сб):
Код
=ЧИСТРАБДНИ.МЕЖД(A2;B2;"0010010")

только среда:
Код
=ЧИСТРАБДНИ.МЕЖД(A2;B2;14)
 
ВСЕМ БОЛЬШОЕ СПАСИБО!
Буду смотреть и разбираться.
Мне было сложно понять, как 2 даты сделать массивом. Ща посмотрим.
Ещё раз всем спасибо!
С меня пиво.
 
У ДВ оптимальный вариант. Другие лучше вообще не брать в расчет.
С уважением,
Федор/Все_просто
 
Цитата
ikki пишет: вариант ...
БЛИН!!! ТОЧНО!!!
У меня ДВССЫЛ никак не хотел работать.
А вся суть в том, что я тупо забыл прописать СТРОКА...
Ну блин...

Спасибо! =)
 
Цитата
Все_просто пишет:
оптимальный вариант
а каков критерий "оптимальности"?
что не во всех версиях работает?  :D
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Критерий оптимальности для меня состоит в простоте и быстроте формулы. Чем меньше функций в формуле, тем более быстрой она является. К тому же, при любом удобном случае лучше - да и легче - пользоваться встроенными функциями (не беру в расчет массивы - здесь все немного сложнее).
Изменено: Все_просто - 21.07.2013 17:40:25
С уважением,
Федор/Все_просто
 
Код
=СЧЁТ(ЕСЛИ(СТРОКА(40000:50000)>=A2;ЕСЛИ(СТРОКА(40000:50000)<=B2;ЕСЛИ(ОСТАТ(ДЕНЬНЕД(СТРОКА(40000:50000);2);3)<>0;СТРОКА(40000:50000)))))
среда+суббота - массивная без ДВССЫЛ
 
Цитата
Все_просто пишет:
Чем меньше функций в формуле, тем более быстрой она является.
Не всегда это верно.
 
Полностью согласен. Именно поэтому вместе "СУММЕСЛИ" лучше использовать старое доброе "СУМС"=>"ЕСЛИ". =)
 
"вместе с" или "вместо"?
СУММ(ЕСЛИ(...) - будет формула массива, гарантированно медленнее СУММЕСЛИ(), которая работает с диапазоном.
 
СУММ(ЕСЛИ(...)
И да, я согласен, что формулы массива медленнее. Однако в некоторых случаях я просто не вижу другого выхода.
 
Oфф.
Цитата
SanShiney пишет: у меня есть товарищ, гуру эксель.
Цитата
Юрий М пишет: Так почему бы не спросить у этого товарища?
Напомнило невыдуманную историю:
Малыш: У меня есть друг, он негр, …
Родители: ?!
Малыш: Ну, … он просто очень загорелый

Теперь понятно, как правильно называть всех гуру Excel – афроамериканцы!  :)
Изменено: ZVI - 22.07.2013 03:22:34
 
:)
 
ОФФ
Тогда и ЧИСТРАБДНИ для афроамериканцев подходит, ну если сквозь призму цитаты нижеследующей:

ZsaZsaZu: экселевская функция ЧИСТРАБДНИ мейкс ми край. звучит как глагол.
ZsaZsaZu: пойду чистрабдну
ZsaZsaZu: а еще есть функция РАЗНДАТ.
ZsaZsaZu: "он был красив и разндат"
ZsaZsaZu: КУБЧИСЛОЭЛМНОЖ СУКА!!!!!
ZsaZsaZu: есть еще древнегреческий ученый ДСТАНДОТКЛ
ZsaZsaZu: ДАТАКУПОНДО - это боевое искусство такое.
ZsaZsaZu: ПОИСКПОЗ - функция для тех, кому нехватает разнообразия
ZsaZsaZu: вот еще греческого философа нашла: СРОТКЛ
ZsaZsaZu: я прнс ЛГРФПРИБЛ

bash.im (с)

Кстати, здравствуйте (-:
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
Страницы: 1
Читают тему
Наверх