这是我到目前为止的第一个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
答案 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 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
注意:请注意,如果您添加或删除列,则需要记住第二种方法来更改该列相应地在代码中建立索引。
希望这会有所帮助。