У меня есть даты в столбце A, начиная с [A1] что мне нужно было сопоставить ближайший вторник на этой неделе, если нет — четверг, если нет — вторник следующей недели. Функции, которые я использую:
Ближайший Вт [B1] =IF(A1+1-WEEKDAY(A1,3)<A1,(A1+1-WEEKDAY(A1,3)+7),A1+1-WEEKDAY(A1,3))
Ближайший чт [C1] =IF(A1+3-WEEKDAY(A1,3)<A1,(A1+3-WEEKDAY(A1,3)+7),A1+3-WEEKDAY(A1,3))
Теперь, чтобы узнать ближайший вторник или четверг, я сравниваю разницу между [A1] и вт и чт:
[D1] =IF(AND((B1-A1)<(C1-A1),(C1-A1)>(B1-A1)),B1,C1)
У меня возникает соблазн заменить B1 / C1 вложенными функциями «ЕСЛИ», которые раздувают мою формулу, делая файл толстым и медленным, но я избавлюсь от дополнительных столбцов B и C в своей электронной таблице, которая используется несколькими людьми.
Не могли бы вы порекомендовать, как сделать его чище?
1 ответ
Учитывая ваши разъяснения в комментариях, чтобы найти
текущий или следующий вторник или четверг, вы можете использовать:
=A1+7-WEEKDAY(A1-3-2*(WEEKDAY(A1,13)<=2))
Другими словами,
- если дата — среда или чт, верните следующий или текущий чт
- В противном случае вернитесь в следующий или текущий вторник.
Это отлично, Рон. Не могли бы вы объяснить, что там происходит? Похоже, вы устанавливаете начало недели как среду и переходите на следующую неделю, вычитая … я теряю
— Павел Кобзарь
4 часа назад
@PavloKobzar Он основан на основной формуле, которая
someDate - Weekday(someDate)
всегда будет возвращать предыдущую субботу. Поскольку вы хотите вернуть такой жеT/Th
вы начинаете со следующей недели. А поскольку вы хотите вернуть вторник или четверг в зависимости от того, какой сейчас день недели, вы меняете вычитаемую сумму на3
или5
. С использованием13
Аргумент просто упрощает вычисления.— Рон Розенфельд
1 час назад