Изменение значения ячейки на основе другой ячейки - PullRequest
1 голос
/ 14 мая 2019

Что я хочу сделать, так это если столбец O содержит «выходные», а затем изменить значение ячейки столбца M на «3».

Sub weekly_weekend()
  lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
  Application.ScreenUpdating = False

  For x = 2 To lastrow
   If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then 
     Sheet1.Range("M" & x).Value = "3"
  Next x

  Application.ScreenUpdating = True
End Sub

1 Ответ

2 голосов
/ 14 мая 2019

Проблема с вашим кодом заключается в том, что вы получаете последнюю строку column A, и это не позволит выполнить For. Чтобы исправить свой код, вы можете действовать несколькими способами.

Использование диапазона

  • Одним из них является использование свойства Range, чтобы вы могли явно написать имя столбца, например:

    Sub weekly_weekend()
        lastrow = Sheet1.Range("O" & Sheet1.Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    

Подбирая правую колонку

  • Или вы можете просто выбрать нужный номер нужного столбца (в данном случае column O равен 15), например:

    Sub weekly_weekend()
        lastrow = Sheet1.Cells(Sheet1.Rows.Count, 15).End(xlUp).Row
        Application.ScreenUpdating = False
    
        For x = 2 To lastrow
            If InStr(1, Sheet1.Range("O" & x).Value, UCase("weekend"), 1) > 0 Then Sheet1.Range("M" & x).Value = "3"
        Next x
    
        Application.ScreenUpdating = True
    End Sub
    

Примечание : обратите внимание, что если вы добавляете или удаляете столбцы, при втором способе вам нужно помнить об изменении индекса столбца в вашем код соответственно.

Надеюсь, это поможет.

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