Year(2020)
, как упоминалось, возвращает 1905, это потому, что он работает с необработанным номером / серийным номером, никак не отформатированным. Дата, записанная в ячейке как дата, будет распознана как дата, и значение изменится, но при форматировании оно будет выглядеть одинаково. Например, сегодняшняя дата - 43650 без форматирования, а Year(43650)
возвращает 2019
.
Просто напишите 2020
, как показано ниже, если вы хотите сравнить каждый Year(date)
с этим числом
Sub yearTest()
Dim SrchRng As Range, cel As Range
Set SrchRng = Range("D1:D9")
For Each cel In SrchRng
If IsEmpty(cel) And Year(cel.Offset(0, -1)) = 2020 Then
cel.Offset(0, -2).Value = "Test"
End If
Next cel
End Sub
Также вы можете попробовать формулу на листе, например = Год (C1) в ячейке D1, а затем изменить форматирование даты в C1, чтобы увидеть несуществующие эффекты.