2016-11-27 59 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