Кристине нужен способ рассчитать первый вторник любого месяца.

Итак, учитывая месяц и год, ей нужно получить дату того первого вторника.

Существует довольно много разных формул, которые можно использовать для достижения желаемого результата. В большинстве подходов функция WEEKDAY тем или иным образом используется, поскольку она может возвращать числовое значение, представляющее день недели для любой заданной даты. Предполагая, что вы поместили месяц в ячейку A1 (от 1 до 12) и четырехзначный год в ячейку A2, тогда следующие формулы будут возвращать дату первого вторника месяца. (Я расположил формулы по длине, от самой длинной к самой короткой.)

=DATE(A2,A1,1)+IF(WEEKDAY(DATE(A2,A1,1))=3,0,IF(WEEKDAY(DATE(A2,A1,1))>3,7-WEEKDAY(DATE(A2,A1,1))+3,3-WEEKDAY(DATE(A2,A1,1))))

=IF(3-WEEKDAY(DATE(A2,A1,1))>=0,DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1)),DATE(A2,A1,1)+7+3-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)+IF(3-WEEKDAY(DATE(A2,A1,1))>=0,3-WEEKDAY(DATE(A2,A1,1)),10-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)-WEEKDAY(DATE(A2,A1,1),1)+3+IF(WEEKDAY(DATE(A2,A1,1),1)>3,7,0)

=DATE(A2,A1,1)+8-DAY(DATE(A2,A1,1))-WEEKDAY(DATE(A2,A1,1)-DAY(DATE(A2,A1,1))-2)

=DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1))+(1-(3>=WEEKDAY(DATE(A2,A1,1))))*7 =DATEVALUE(A2&"/"&A1&"/1")+MOD(10-WEEKDAY(DATEVALUE(A2&"/"&A1&"/1")),7)

=DATE(A2,A1,MATCH(TRUE,WEEKDAY(DATE(A2,A1,{1,2,3,4,5,6,7}))=3,0))

=DATE(A2,A1,MOD(10-WEEKDAY(DATE(A2,A1,1)),7)+1)

=DATE(A2,A1,1)+MOD(3-WEEKDAY(DATE(A2,A1,1)),7)

=DATE(A2,A1,1)+7-WEEKDAY(DATE(A2,A1,1),13)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,1),13))

=DATE(A2,A1,7)-MOD(DATE(A2,A1,7)-3,7)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,5)))

=DATE(A2,A1,8)-WEEKDAY(DATE(A2,A1,5))

Если вам удобнее указать дату в месяце, который вы хотите оценить, вы можете изменить формулы, чтобы учесть это. Ниже приведены лишь несколько формул, которые можно использовать, если вы поместите фактическую дату в ячейку A1:

=DATE(YEAR(A1),MONTH(A1),MATCH(TRUE,WEEKDAY(DATE(YEAR(A1),MONTH(A1),{1,2,3,4,5,6,7}))=3,0))

=DATE(YEAR(A1),MONTH(A1),MOD(10-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)+1)

=DATE(YEAR(A1),MONTH(A1),1)+MOD(3-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)

=DATE(YEAR(A1),MONTH(A1),1)+7-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13))

=DATE(YEAR(A1),MONTH(A1),7)-MOD(DATE(YEAR(A1),MONTH(A1),7)-3,7)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5)))

=DATE(YEAR(A1),MONTH(A1),8)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5))

=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-1,3)

Наконец, вы можете рассмотреть подход, основанный на макросах. Ниже представлена ​​пользовательская функция, которая быстро определяет первый вторник:

Function FirstTuesday(M As Integer, Y As Integer) As Date     Dim dResult As Date

dResult = DateSerial(Y, M, 1)

Do While Weekday(dResult) <> vbTuesday         dResult = DateAdd("d", 1, dResult)

Loop     FirstTuesday = dResult End Function

Все, что вам нужно сделать на рабочем листе, — это передать пользовательской функции желаемый числовой месяц и год:

=FirstTuesday(6,2018)

Если хотите, можете указать, что месяц и год находятся в ячейке:

=FirstTuesday(A2,A1)

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13540) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.