嗨所以我正在尝试运行以下脚本,但它所做的只是放置" N / A"在一个列中,只是循环遍历下面的所有其他单元格而不做任何事情。
Sub NA()
Range("E1").Select
Do Until IsEmpty(ActiveCell)
If Range("E1") = "password_update" Then If Range("G1") = Range("J1") Then Range("B1") = "N/A"
ActiveCell.Offset(1, 0).Select
Loop
End Sub
我要做的是检查单元格"E1"
是否具有该值
" password_update"在其中,如果是,则还检查单元格"G1"
和单元格"J1"
是否具有匹配的内容,如果所有这些条件匹配,则键入" N / A"到单元格"B1"
。
我还希望让这个脚本循环遍历所有后续行(E1
然后E2
然后E3
等等,你就明白了。现在我不是VBA专家,但是我写了这个剧本,无论我看多少次,对我来说逻辑上都有道理,但它仍然没有用。有任何想法吗?帮助将不胜感激。
答案 0 :(得分:1)
试试这个。尽可能避免在代码中使用select语句。
Sub NA()
lastrow = Cells(Rows.Count, "E").End(xlUp).Row
For X = 1 To lastrow
If Range("E" & X).Value = "password_update" And Range("G" & X) = Range("J" & X) Then Range("B" & X) = "N/A"
Next X
End Sub
答案 1 :(得分:0)
与上面的代码类似,但是如果你想更明确地了解正在发生的事情以及你正在使用的工作表(如果你在错误的工作表中运行,例如考虑在下面添加类似的东西)。这使用与您使用的相同的逻辑
Sub UpdateColBwithNA() 'Place in a standard module
Dim wb As Workbook
Dim ws As Worksheet
Dim LastRow As Long
Dim currentRow As Long
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1") 'Change to name of sheet you are running code against
With ws
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("E1").Activate
For currentRow = 1 To LastRow
If .Cells(currentRow, "E") = "password_update" And _
(.Cells(currentRow, "G") = .Cells(currentRow, "J")) Then
.Cells(currentRow, "B") = "N/A"
End If
Next currentRow
End With
End Sub
With语句表示您不必转到表格。