Ячейка автозаполнения с номером месяца, если соседняя ячейка содержит дату - PullRequest
1 голос
/ 04 марта 2020

Я ищу более плавное решение для кода ниже. Задача состоит в том, чтобы, если столбец O не был пустым, проверить, не является ли AH пустым. Если AH не пусто (тогда оно содержит дату), мне нужно получить номер месяца с этой даты до столбца AI (рядом с AH).

Я новичок в кодировании и до сих пор ниже есть то, что у меня есть, но это не кажется идеальным решением, так как это просто добавление формулы, и я полагаю, это также может быть сделано al oop.

Большое спасибо заранее.

Sub d_month()

Dim r As Range
Dim LastRow As Long

With Application.ActiveSheet

    LastRow = .Cells(.Rows.Count, "O").End(xlUp).Row

    For Each r In .Range("O2:O" & LastRow)
        If r.Value <> "" Then
            r.Offset(0, 20).Value = "=IF(RC[-1]="""","""",MONTH(RC[-1]))"
        End If
    Next r
End With

End Sub

1 Ответ

1 голос
/ 04 марта 2020

Существуют различные способы сделать это. Вы можете использовать Excel Formulas, Worksheet_Change или как показано ниже.

Несколько предложений (не жесткое и быстрое правило. Просто мое личное мнение).

  1. Сохраняйте код простым и понятным.
  2. Избегайте использования Offset до тех пор, пока это не станет действительно важным. Таким образом, вы узнаете, с какой клеткой обращаетесь, просто взглянув на нее. Со смещением вам нужно будет посчитать и убедиться, что это правильная ячейка.
  3. Используйте простой For Loops, как показано ниже.

Это то, что вы пытаетесь?

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim lRow As Long
    Dim i As Long

    '~~> Change this to relevant sheet
    Set ws = Sheet1

    With ws
        lRow = .Range("O" & .Rows.Count).End(xlUp).Row

        For i = 2 To lRow
            '~~> Check if O and AH are not empty
            If Len(Trim(.Range("O" & i).Value)) <> 0 And _
               Len(Trim(.Range("AH" & i).Value)) <> 0 Then
                '~~> Write to AI
                .Range("AI" & i).Value = Month(.Range("AH" & i).Value)
            End If
        Next i
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...