почему vlookup возвращает # N / A, когда соответствие является жизнеспособным - PullRequest
0 голосов
/ 12 мая 2019

Используя Excel VBA, я пытаюсь проверить, является ли дата выходным днем ​​(или нет).Однако, если дата не является выходным днем, который является номером 1 в моем массиве выходных дней, я продолжаю получать # N / A. (Или в случае ниже, сообщение «не найден») ЕДИНСТВЕННОЕ время, когда оно совпадает, это если датаявляется первым перечисленным в моем массиве Bank Holiday.Я просмотрел все запросы "Vlookup - # N / A, которые были зарегистрированы, но не вижу ответа на мою конкретную проблему. Я могу использовать цикл For-Next, используя x = 1 до 9, для циклического прохожденияBank_Holiday, и он работает отлично. Почему не работает Vlookup?

Dim Bank_Holiday(1 To 9) As Long
Dim thisdate As Long
Dim found As Boolean
Dim nextdate As String
Dim y As Variant

'заполняет даты праздничных дней (2020) числами

Bank_Holiday(1) = 43833
Bank_Holiday(2) = 43931
Bank_Holiday(3) = 43934
Bank_Holiday(4) = 43955
Bank_Holiday(5) = 43976
Bank_Holiday(6) = 44074
Bank_Holiday(7) = 44190
Bank_Holiday(8) = 44193
Bank_Holiday(9) = 44197

Windows("bankacct20 - Copy.xlsx").Activate           ' An available workbook
Sheets("Jan_Mar20").Select                           'An available worksheet
ActiveSheet.Cells(5, 1).Select                       'Top of the "Date" column
thisdate = ActiveCell()                              'pick up the date

y = Application.VLookup(thisdate, Bank_Holiday, 1, False)

If Not (IsError(y)) Then
     found = True
End If
nextdate = Format(thisdate, "dddd dd mm yyyy")

If found Then
    MsgBox ("Congratulations! " & nextdate & " Found!")
Else
    MsgBox ("The Bank Holiday date " & nextdate & " does not exist")
End If

Я ожидаю, что когда активная ячейкаЭто выходной день, окно сообщения будет отражать это.

...