Страницы: 1
RSS
Проставлять дату в зависимости от дня недели
 
Доброго времени суток.    
Уважаемое сообщество, помогите мне решить проблему - каким образом можно без взаимодействия пользователя менять дату в определенных ячейках, и делать это в зависимости от дня недели?  
То есть нужно, чтобы в ячейке (хотя бы в одной) отображалось число понедельника (этой недели), с (прошлой)пятницы по четверг(уже этой недели) и так в цикле. Объясню на цифрах: в промежуток с 30.11.12 по 6.12.12 должна отображаться дата 3.12.12, а с 7.12.12 по 13.12.12 - 10.12.12 и т.д.  
Пытался делать это с помощью формулы =TODAY(), но функционал и гибкость не та, а что-то более удобного не нашел.
 
если правильно понял посмотрите такой вариант  
=СЕГОДНЯ()-(ДЕНЬНЕД(СЕГОДНЯ();2)-1)
 
Спасибо за вариант!  
Я к сожалению новичок, поэтому логику формулы до конца не понял) А как ее проверить в "полевых" условиях? На сегодняшнее число она показывает нужный результат, но перевод системной даты ничего не поменял в документе.
 
для проверки  
=B2-(ДЕНЬНЕД(B2;2)-1) в B2 вписываем любую дату.
 
{quote}{login=V}{date=04.12.2012 12:26}{thema=}{post}для проверки  
=B2-(ДЕНЬНЕД(B2;2)-1) в B2 вписываем любую дату.{/post}{/quote}  
 
Это уже пляшет от введенных данных, а мне нужно чтобы плясало от системной даты.  
К тому же в пятницу, субботу и воскресенье все равно отображается понедельник ЭТОЙ недели, а должен бы уже понедельник следующей недели.
 
Так как я мало знаю по макросам/формулам/VBA, то у меня в голове рождается монструозная конструкция на проверку дня недели с помощью =СЕГОДНЯ и многослойных ЕСЛИ, я надеялся на более изящное и продуманное решение )
 
Если вариантов больше нету, то подскажите в чем здесь ошибка и как оптимизировать формулу:  
=ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=5;СЕГОДНЯ()+3;ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=6;СЕГОДНЯ()+2;ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=7;СЕГОДНЯ()+1;ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=4;СЕГОДНЯ()-3;ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=3;СЕГОДНЯ()-2;ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)=1;СЕГОДНЯ();))))))
 
=ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)>=5;СЕГОДНЯ()+(8-ДЕНЬНЕД(СЕГОДНЯ();2));СЕГОДНЯ()-(ДЕНЬНЕД(СЕГОДНЯ();2)-1))  
для проверки  
=ЕСЛИ(ДЕНЬНЕД(B2;2)>=5;B2+(8-ДЕНЬНЕД(B2;2));B2-(ДЕНЬНЕД(B2;2)-1))
 
=МАКС((НОМНЕДЕЛИ(СТРОКА(ДВССЫЛ(A1-7&":"&A1+7))+3;2)=НОМНЕДЕЛИ(A1+3;2))*(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A1-7&":"&A1+7));2)=1)*СТРОКА(ДВССЫЛ(A1-7&":"&A1+7)))
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
=СЕГОДНЯ()-(ДЕНЬНЕД(СЕГОДНЯ();2)-1)+7  
или  
=СЕГОДНЯ()-(ДЕНЬНЕД(СЕГОДНЯ();3))+7
 
=ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ();2)>4;СЕГОДНЯ()+(8-ДЕНЬНЕД(СЕГОДНЯ();2));СЕГОДНЯ()+(1-ДЕНЬНЕД(СЕГОДНЯ();2)))
 
Господа, попробовал ваши формулы, спасибо большое!  
Но у меня вопрос, как перевести дату из последовательного вида чисел которое мне показывает ексель (вида 41246)?
 
{quote}{login=HE_CAXAP}{date=04.12.2012 03:47}{thema=}{post}Господа, попробовал ваши формулы, спасибо большое!  
Но у меня вопрос, как перевести дату из последовательного вида чисел которое мне показывает ексель (вида 41246)?{/post}{/quote}  
 
Я поступил тупо как умел - привел формат ячеек к формату даты
Страницы: 1
Читают тему
Наверх