Вы сказали, что используете формулу =U1-WEEKDAY(U1)+6
с датой в ячейке U1
которая является субботой. Чтобы ответить на ваш вопрос, вам нужно решить, что вернет WEEKDAY(U1)
.
Функция Excel WEEKDAY()
берет дату и возвращает число от 1 до 7, обозначающее день недели. По умолчанию WEEKDAY возвращает 1 для воскресенья и 7 для субботы. Следовательно, в вашем случае WEEKDAY(U1)
вернет 7. Это превратит вашу формулу в расчет U1-7+6
.
Иногда меня сбивает с толку то, что Excel не следует истинному правилу BODMAS. Это следует за формулой слева направо, если нет скобок. Сначала он вычислит все в скобках слева направо, а затем вычислит остаток слева направо. Если бы он следовал BODMAS, он вернул бы результат U1-13
.
В Excel ваша формула даст вам результат U1-1
(предыдущий день).
Если бы U1
была средой, это было бы U1-4+6
что дало бы вам 2 дня после дня в U1
. Вы видите, что делает формула?
Формула определяет, какая дата пятницы на неделе воскресенья-субботы для даты, указанной в U1
.
Если вы хотите, чтобы пятница была на неделе, следующей за датой в U1
вы можете заключить текущую формулу в квадратные скобки и добавить 7 при создании формулы =(U1-WEEKDAY(U1)+6)+7
Там будет проблема, хотя с этой формулой. Если вы измените свою начальную дату на среду, первая дата выплаты будет перенесена на пятницу следующей недели, в результате чего будет пропущен день выплаты.
Если вы хотите использовать исходную формулу, вам нужно будет использовать функцию IF()
чтобы проверить, является ли U1
пятницей или раньше.
=IF(WEEKDAY(U1)=<6,U1-WEEKDAY(U1)+6,(U1-WEEKDAY(U1)+6)+7
Более эффективная формула для использования (короткая и без функций IF()
)
= U1+(7-ДЕНЬНЕД (u1,2)+5)
Параметр ,2
в функции WEEKDAY()
меняет формат дня недели с воскресенья на субботу на понедельник в воскресенье с понедельника = 1