2016-11-27 85 views
-1

我在excel中有一列有两个值“不合格”和“打开”。使用excel vba将数值转换为数字if语句

我想用VBA改变不合格值0和值开使用IF语句1.

这里是Excel公式表示就是我想要做的

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

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

+0

只要做一个查找和替换。 –

+0

我可以手动过滤和更改值,或者执行查找和替换或公式。不过,我将自动化的电子表格用于将值导入数据库,并且我想使用vba编写所有进程,因此不需要手动工作。谢谢 – Pete

+1

在这种情况下,请尝试开启宏记录器,执行手动操作,然后修改生成的代码。如果您需要最后一部分的帮助,请回到这里。 –

回答

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 
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