Ближайшая суббота

Определим дату ближайшей субботы перед заданным днем. Т.е. если сегодня 25.11.2014 (вторник), то ближайшая прошедшая суббота - 22.11.2014. Также определим дату ближайшей субботы после заданного дня и просто дату ближайшей субботы.

Чтобы определить дату ближайшей прошедшей субботы, создадим таблицу: зададим нужные нам дни, затем определим дни недели этих дат (см. файл примера).

День недели определим с помощью формулы =ДЕНЬНЕД(A6;2). Второй аргумент соответствует неделе, которая начинается с понедельника (понедельник =1, вторник =2 и т.п.).

Ближайшая суббота ПЕРЕД датой определяется с помощью формулы =ЕСЛИ(B6=7;A6-1;A6-B6-1)

Ссылку на ячейку В6 можно заменить на формулу ДЕНЬНЕД(A6;2).

Если заданная дата - суббота (см. ячейку А6), то берется предыдущая суббота.

Последующая суббота

Аналогичную формулу можно написать для определения следующей субботы =ЕСЛИ(B6>=6;A6-B6+13;A6-B6+6). Если заданная дата - суббота (см. ячейку А6), то берется следующая суббота.

Ближайшая суббота

Ближайшую субботу (если не важно перед или после) можно определить с помощью формулы =A6+ВЫБОР(ДЕНЬНЕД(A6;2);-2;-3;3;2;1;0;-1)

Произвольный день недели

Действительно, почему именно суббота? Может ведь потребоваться найти ближайшую среду или пятницу?

В файле примера на листе Любой день сделан и такой расчет, хотя формулы усложнятся.

Особенно для ближайшего дня: =A6+ВЫБОР(ДЕНЬНЕД(A6;2);-2;-3;3;2;1;0;-1)+$F$3-6+ПРОСМОТР(ВЫБОР(ДЕНЬНЕД(A6;2);-2;-3;3;2;1;0;-1)+$F$3-6;{-9:-3:4};{7:0:-7})

Первая часть формулы =A6+ВЫБОР(ДЕНЬНЕД(A6;2);-2;-3;3;2;1;0;-1)+$F$3-6 аналогична вышеуказанной формуле для субботы с небольшой поправкой, которая зависит от заданного дня недели в ячейке F3 (для субботы эта поправка =0). Оставшаяся часть формулы корректирует полученную дату на + или - одну неделю (7 дней), чтобы дата действительно была ближайшей.

Связанные статьи

Похожие задачи
Прочитайте другие статьи, решающие похожие задачи в MS Excel. Это позволит Вам решать широкий класс подобных задач.
Средняя: 5 (1 оценка)

Комментарии

MCH

Без вспомогательных ячеек.
Предшествующая суббота:
=A6-ОСТАТ(A6-1-6;7)
Последующая суббота:
=A6+ОСТАТ(6-A6+1;7)
если дата в A6 попадает на субботу, то она (дата) не меняется.
число 6 в формуле означает субботу, ее легко можно заменить на любой другой день: 1 - пн ... 7 - вс

Creator

Все гениальное просто! Спасибо.

MCH

Если нужно найти ближайшую субботу +/- 3 дня от текущей даты, то алгоритм очень простой, вычитаем из текущей даты 3 дня и ищем последующую субботу по формуле:
=A6-3+ОСТАТ(6-A6+4;7)
где число 6 также можно поменять на любой другой день недели