使用excel vba if将值转换为数字

时间:2016-11-27 17:29:37

标签: excel excel-vba if-statement vba

我在excel中有一列有两个值“Disqualified”和“Open”。

我想使用VBA将If语句更改为0,将Open值更改为1.

这是excel公式,显示了我想要做的事情

=IF(H:H="Disqualified","0","1")

我认为我需要一个for循环来循环遍历H列中的所有值,但似乎无法使其工作。感谢

2 个答案:

答案 0 :(得分:1)

使用self-answer中的代码,它可以(并且应该)重构以摆脱Select部分(将来几乎总会产生问题)。

Sub changeValues()
    With Worksheets("your_sheet_name")
        With .Range("H1:H" & .Range("H" & .Rows.Count).End(xlUp).Row)
            .Replace What:="Disqualified", _
                     Replacement:="0", _
                     LookAt:=xlPart, _
                     SearchOrder:=xlByRows, _
                     MatchCase:=False, _
                     SearchFormat:=False, _
                     ReplaceFormat:=False
            .Replace What:="Open", _
                     Replacement:="1", _
                     LookAt:=xlPart, _
                     SearchOrder:=xlByRows, _
                     MatchCase:=False, _
                     SearchFormat:=False, _
                     ReplaceFormat:=False
        End With
    End With
    'I doubt if the next line is needed
    'ActiveWindow.SmallScroll Down:=-66
End Sub

答案 1 :(得分:0)

那么可能有更好的方法来编写这个,但是这个宏可以完成这项工作。

Sub changeValues()
'
' changeValues Macro
'

'
    Range(Selection, Selection.End(xlDown)).Select
    Selection.replace What:="Disqualified", Replacement:="0", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.replace What:="Open", Replacement:="1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    ActiveWindow.SmallScroll Down:=-66
End Sub