我在excel中有一列有两个值“Disqualified”和“Open”。
我想使用VBA将If语句更改为0,将Open值更改为1.
这是excel公式,显示了我想要做的事情
=IF(H:H="Disqualified","0","1")
我认为我需要一个for循环来循环遍历H列中的所有值,但似乎无法使其工作。感谢
答案 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