Если вы хотите решение, отличное от VBA, вы можете использовать формулу для создания временного смещения в зависимости от того, попадает ли указанная дата в день летнего времени. В Великобритании это более простая проблема для меня, но со стандартом США (второе воскресенье в марте и первое воскресенье в ноябре) это немного сложнее.
Я не знаю, как работают ваши текущие формулы или как часто они работают, но смещение, которое вы можете добавить к ним, будет вычислять что-то вроде этого:
=IF(WEEKDAY(My_Date,3)<>6,0,
IF(
AND(
Month(My_Date)=11,
My_Date-EOMONTH(My_Date,-1)<=7),
1,
IF(
AND(
Month(My_Date)=3,
My_Date-EOMONTH(My_Date,-1)>7,
My_Date-EOMONTH(My_Date,-1)<=14,
-1,
0)
)
)
В основном, мы проверяем, является ли дата воскресеньем. Если нет, то смещение равно нулю. Если это так, проверьте, является ли это ноябрь и в течение 7 дней после окончания предыдущего месяца, и в этом случае смещение составляет +1. В противном случае проверьте, является ли это март и 7-14 дней с конца предыдущего месяца. Если это так, то смещение равно -1.
При отсутствии дополнительной информации о ваших текущих формулах, вышеупомянутое решение предназначено только для учета целых дней, и кажется, что ваша проблема более специфична по времени. Приведенная выше формула все еще должна сохраняться, но может потребоваться добавить 1/24 здесь или там, чтобы она сработала только в том случае, если вы хотите.