根据另一个单元格VBA更改单元格的值

时间:2019-05-14 10:26:22

标签: excel vba

这是我到目前为止的第一个vba问题。我想做的是,如果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 个答案:

答案 0 :(得分:2)

您的代码存在问题,因为您正在获取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 O15),

    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
    
  

注意:请注意,如果您添加删除列,则需要记住第二种方法来更改该列相应地在代码中建立索引。

希望这会有所帮助。