Использование года в одной ячейке для определения содержимого другой ячейки - PullRequest
0 голосов
/ 03 июля 2019

То, что я хочу сделать, это поместить значение в столбец на основе года в другом столбце. Столбец года представлен в формате MM / DD / YYYY. Я не очень опытный программист VBA, но я стараюсь выучить его как можно быстрее.

Я уже пытался использовать функцию Year () в выражении IF, чтобы увидеть, покажет ли он текст, который я хочу, но ничего не показывает в ячейке.

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)) = Year(2020) Then
        cel.Offset(0, -2).Value = "Test"
    End If
Next cel

В ячейке чел -2 ничего не появляется, и я не уверен, что делать дальше. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 июля 2019

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, чтобы увидеть несуществующие эффекты.

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