使用 excel 中的 vba 基于另一列更改列值

Changing column value based on another column using vba in excel

我正在尝试创建一个宏按钮,如果 H 列同一行中的值为“REPO”,它将帮助我将 AE 列中的值更新为“N”。

我不确定为什么我的代码不能正常工作,当我 运行 时似乎 select AE 列而不是将值更改为“N”

Sub Change_Repo_Risk_to_N()     

    Sheets("expo").Select    
    Dim LastRow As Long    
    Dim i As Long    
    LastRow = Range("H" & Rows.Count).End(xlUp).Row

    For i = 2 To LastRow           
        If Range("H" & i).Value = "REPO" Then    
            Range("AE" & i).Value = "N"    
        End If   
    Next i      

End Sub

如果这 3 个可能是错误的:

  • 缺少Trim()
  • 缺少UCase()Option Compare Text是这个的替代品)
  • Select() 速度太慢,无法正确引用工作表 (try to avoid it)

试试这个:

Sub ChangeRepoRiskToN()
 
    With Worksheets("expo")
        Dim lastRow As Long
        Dim i As Long
    
        lastRow = .Range("H" & Rows.Count).End(xlUp).Row
            For i = 2 To lastRow
                If Trim(UCase(.Range("H" & i).Value)) = "REPO" Then
                    .Range("AE" & i).Value = "N"
                End If
            Next i
    End With

End Sub