2016-11-27 3 views
-1

У меня есть столбец в excel, который имеет два значения «Disqualified» и «Open».Преобразование значений в число с помощью excel vba if statement

Я хочу использовать заявление, если с помощью VBA для изменения дисквалифицированных значений 0, а открытых значений 1.

Вот формула первенствовать, которая показывает, что я хочу сделать

=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