[엑셀 VBA #6] IF~ELSE 조건문 활용하기




엑셀 VBA의 조건문은 두 가지로 분류될 수 있습니다.

첫째는 IF~ELSE문, 둘째는 CASE 문 입니다.

이번 포스팅에서는 조건문 중 하나인 IF~ELSE문에 대해 알아보도록 하겠습니다.


이번에도 마찬가지로 예제와 함께 시작하겠습니다.

시트 숨김을 해제하시면 이전 예제들도 확인할 수 있습니다.






이번 예제는 조건에 맞는 셀에 색상을 입히는 엑셀 VBA입니다.


위 예제는 조건문과 반복문이 같이 응용된 구조입니다.


IF~ELSE 조건문은 일반적으로 아래와 같이 구성됩니다.


If 조건1 and 조건2 ... 조건n


명령


else


명령


end if


상황에 따라 여러가지 조건을 부여할 수 있습니다.

조건식은 논리연산식을 기초로 합니다.


엑셀 VBA의 IF~ELSE 조건문은 엑셀 자체의 함수와 비슷합니다.

다만 단순 연산이 아닌 명령을 실행하는 데에 엑셀 자체 기능은 한계가 있기 때문에 그런 경우에 엑셀 VBA로 사용합니다.


예제의 코드를 살펴보겠습니다.


Dim i As Byte


For i = 3 To 10 Step 1           '3번째 행부터 10번째 행까지 색을 입혀야 하기 때문에 행을 i 로 하는 반복문을 만듭니다.


If Sheet5.Cells(i, 2).Value <= 60 Then                '셀의 값이 60보다 작거나 같을 경우

Sheet5.Cells(i, 1).Interior.Color = RGB(100,100,100)                '왼쪽 셀의 색깔을 RGB(100,100,100)으로 바꿉니다.

Else                   '60보다 같거나 작은 경우, 60보다 큰 경우, 두 가지뿐이 없기 때문에 Else 이하 명령은 생략합니다.

End If


Next i








두 번째 예제는 엑셀 VBA의 IF~ELSE 문을 활용한 다중조건문입니다.

엑셀 자체의 IF 함수에 다중 조건문을 형성할 수 있는 것처럼, 엑셀 VBA의 IF~ELSE 조건문도 다중으로 구성할 수 있습니다.


Dim i As Byte


For i = 14 To 21 Step 1


    If Sheet5.Cells(i, 2).Value = 0 Then

    Sheet5.Cells(i, 1).Interior.Color = RGB(100, 10, 10)


    Else

    

        If Sheet5.Cells(i, 2).Value = 100 Then

        Sheet5.Cells(i, 1).Interior.Color = RGB(200, 200, 200)

        

        Else

            If Sheet5.Cells(i, 2).Value <= 60 Then

            Sheet5.Cells(i, 1).Interior.Color = RGB(100, 100, 100)

            Else

            End If

        End If

    

    End If

        

Next i


잘 보시면 위의 식과 순서가 바뀌어있습니다.

값이 60보다 작거나 같을 경우를 가장 아래에 놓은 이유는, 0 또한 60보다 작거나 같을 경우에 해당하기 때문입니다.

따라서 조건이 가장 작고 다른 조건과 교집합이 존재하지 않는 조건을 가장 앞에 둬야 합니다.




사실 엑셀 VBA의 IF~ELSE문은 조건이 여러개일 경우 적합하지 않습니다.

식도 길어지고 제한이 많이 있습니다.

따라서 조건이 여러개일 경우에는 CASE문을 사용하는 것이 알맞습니다.


다음 포스팅은 CASE 조건문을 사용한 다중 조건문에 대해 알아보겠습니다.








Posted by Simon K
: