2013-11-07 6 views
2

Я пытаюсь создать систему распределения, и пока я запрограммировал VBA, прежде чем я застрял на этот раз!Как обрабатывать несколько запросов IFTHEN по столбцам в Excel?

У меня есть данные по пяти столбцам, содержимое которых определяет, какой сотрудник я им выделяю.

Что мне нужно сделать, это:

If column E = "a", then put name "xx" in column A (of same row) 
If column E = "b", then put name "yy" in column A (of same row) 
If column E is blank, then move to next criteria.... 

If column D is "c" then put name "zz" in column A (of same row) 
If column D is "d" then move to next criteria.... 

If column A is blank then put name "ww" in column A. 

Спасибо заранее !!

+0

http://stackoverflow.com/questi ons/19817745/quick-way-to-loop-through-cells-with-if-elseif/19818371 # 19818371 –

+0

или вы можете использовать событие 'Worksheet_Change' –

+0

Спасибо Сиддтэту, но я немного потерял эту длинную формулу, я предположим, что мне придется пробовать и ошибаться с моими значениями. – Guterres

ответ

0
Sub Allocate() 

    Dim i As Long 

    For i = 1 To Range("E" & Rows.Count).End(xlUp).Row 
     If Range("E" & i) = "a" Then 
      Range("A" & i) = "xx" 
     ElseIf Range("E" & i) = "b" Then 
      Range("A" & i) = "yy" 
     End If 

     If Range("D" & i) = "c" Then 
      Range("A" & i) = "zz" 
     End If 

     If IsEmpty(Range("A" & i)) Then 
      Range("A" & i) = "ww" 
     End If 
    Next i 

End Sub 

Обратите внимание, что

If column E is blank, then move to next criteria....

не входит в коде, то нет смысла реализовывать это в коде, потому что буквально делает ничего :)

+1

Спасибо, я работал так, как мне было нужно! – Guterres

0

Как я уже упоминал в ссылке по вашему вопросу, для этого вам не нужен цикл.

Если вы использовали формулу Excel, то вы бы использовать что-то вроде этого

=IF(E1="a","xx",IF(E1="b","yy",IF(D1="c","zz","ww"))) 

Просто используйте, что в коде VBA

Option Explicit 

Sub Sample() 
    Dim lRow As Long 

    '~~> Change this to the relevant sheet 
    With ThisWorkbook.Sheets("Sheet1") 
     lRow = .Range("E" & .Rows.Count).End(xlUp).Row 

     .Range("A1:A" & lRow).Formula = "=IF(E1=""a"",""xx"",IF(E1=""b"",""yy"",IF(D1=""c"",""zz"",""ww"")))" 

     .Range("A1:A" & lRow).Value = .Range("A1:A" & lRow).Value 
    End With 
End Sub 

ScreenShot:

enter image description here

Смежные вопросы