-1
我在excel中有一列有两个值“不合格”和“打开”。使用excel vba将数值转换为数字if语句
我想用VBA改变不合格值0和值开使用IF语句1.
这里是Excel公式表示就是我想要做的
=IF(H:H="Disqualified","0","1")
我想我需要一个for循环来遍历列H中的所有值,但似乎无法使其工作。谢谢
我在excel中有一列有两个值“不合格”和“打开”。使用excel vba将数值转换为数字if语句
我想用VBA改变不合格值0和值开使用IF语句1.
这里是Excel公式表示就是我想要做的
=IF(H:H="Disqualified","0","1")
我想我需要一个for循环来遍历列H中的所有值,但似乎无法使其工作。谢谢
以代码在你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
那么可能有更好的方式来写这个,但这个宏做的工作。
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
只要做一个查找和替换。 –
我可以手动过滤和更改值,或者执行查找和替换或公式。不过,我将自动化的电子表格用于将值导入数据库,并且我想使用vba编写所有进程,因此不需要手动工作。谢谢 – Pete
在这种情况下,请尝试开启宏记录器,执行手动操作,然后修改生成的代码。如果您需要最后一部分的帮助,请回到这里。 –