Как проверить, что в списке отсутствует дата? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть лист Excel, в котором есть список дат

Thursday, May 30, 2013
Friday, May 31, 2013
Monday, June 3, 2013
Tuesday, June 4, 2013
Wednesday, June 5, 2013
Thursday, June 6, 2013
Friday, June 7, 2013
Tuesday, June 11, 2013
Wednesday, June 12, 2013
Thursday, June 13, 2013
Friday, June 14, 2013
Monday, June 17, 2013
Tuesday, June 18, 2013

Мне нужно определить, отсутствует ли у меня дата (только в будний день), и вставить ее с другим цветным фоном.

Я пробовал это

=IF(A2=A1+1,"","Missing next day")

Но он говорит мне, что суббота отсутствует (и я не заинтересован в выходных).

В приведенных выше примерах данных, Понедельник, июнь10 отсутствует

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Это то, с чего можно начать , если вы также хотите изменить цвета:

Public Sub TestMe()

    Dim myCell As Range

    For Each myCell In Range("A1:A12")'One less, because it checks the cell on the next row
        Select Case Weekday(myCell)

        Case vbFriday
            If Weekday(myCell.Offset(1)) <> vbMonday Then
                myCell.Offset(0, 1) = "Missing!"
                myCell.Interior.Color = vbYellow
            End If
        Case vbSaturday, vbSunday
            myCell.Offset(0, 1) = "Not interested"
        Case Else
            If Weekday(myCell.Offset(1)) - 1 <> Weekday(myCell) Then
                myCell.Offset(0, 1) = "Missing!"
                myCell.Interior.Color = vbYellow
            End If
        End Select

    Next myCell

End Sub

enter image description here

В коде используется функция WeekDay, которая возвращает числа в зависимости от недели.Таким образом, если дата в понедельник, она возвращает 2, когда она называется так: Weekday("21.05.2018").Таким образом, можно использовать предопределенное перечисление vbMonday, которое возвращает 2.

На основании этого вводятся операторы Select Case и If, учитывающие 3 случая - vbFriday, vbSaturday, vbSunday и 4 других дня.

В случае, если Else не соответствует ожидаемому, то внутренняя часть становится vbYellow.

0 голосов
/ 22 мая 2018

Это уравнение, которое вы ищете.

=If(A2=WORKDAY.INTL(A1,1),"","Missing Next Day")

Вы также можете создать базу данных праздников, которую хотите исключить из поиска.Вы можете поместить таблицу на другой лист и назвать диапазон вашей таблицы, а затем включить этот именованный диапазон в уравнение на конец рабочего дня.Если вы назовете диапазон «Праздники», уравнение будет обновлено следующим образом:

=If(A2=WORKDAY.INTL(A1,1,Holidays),"","Missing Next Day")
0 голосов
/ 22 мая 2018

Как сказано в @SolarMike:

=IF(A2=A1+(WEEKDAY(A1)=6)*2+1,"","Missing next day")

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...