안녕하세요 모닝수잔입니다 :)
코딩을 배울 때 반복문 For문과 함께 뗄레야 뗄 수 없는 것이 있다면 바로 조건문 If문 입니다. "만약 ~ 라면"으로 유명한 구문인데요, 오늘 포스팅에서는 "김/이/박" 성씨를 가진 9명의 학생을 성씨에 따라 각각 "1반/2반/3반"으로 구분하는 예제를 활용하여 If문을 다뤄보겠습니다.
If 조건 Then
참의 값
(Else
거짓의 값)
End if
※ 여기에서 () 부분은 생략이 가능합니다.
For문과 겹치는 내용이기 때문에 간단하게 다뤄보도록 하겠습니다. 우선 "김/이/박" 성씨를 가진 학생 9명의 명단을 임의로 만들어봤습니다. 여기에서 B열에 있는 학생 "이름"이 "김"씨라면 C열에 있는 "반"열(column)에는 1반이, "이"씨라면 2반이, "박"씨라면 3반이 되도록 if문을 만들어보겠습니다.
1) 먼저 엑셀의 개발도구 - Visual Basic - 삽입 - 모듈에서 새로운 모듈을 만들고 Sub 프로시저를 열어줍니다.
저는 간단하게 "반구하기"라는 이름으로 Sub 프로시저를 만들어봤습니다. 모듈창에 Sub 반구하기()를 치고 Enter를 누르면 바로 End Sub까지 자동완성되겠죠?
2) Dim을 사용해서 "이름"과 "반"을 Range 형식의 변수로 선언합니다.
3) For문을 사용해서 i라는 변수에 3에서 11의 값을 할당해줍니다.
우리가 2)에서 "이름"이라는 변수를 선언했는데, 이 "이름"이라는 변수의 값은 B3셀에서부터 B11셀에 있는 9명의 학생들의 이름이죠. 그래서 For문의 범위를 3 To 11, 즉 3에서 11행(row)으로 지정했습니다.
4) Set과 3)에서 선언한 변수i를 사용해서 "이름"과 "반"에 값을 할당해줍니다.
이제 Set을 사용해서 "이름"과 "반"에 값을 할당해줍니다. 우리는 B3셀에서부터 B11셀이 있는 9명의 학생들의 "이름"을 가져와서 해당 "이름"이 조건에 대해 참/거짓인 경우에 따라 C3셀에서부터 C11셀에 있는 "반"이라는 변수에 값을 할당해줄 예정이므로 2개의 변수 선언과 값의 할당이 필요합니다.
※ 혹시 여기까지의 내용이 생소하시다면, 이전 포스팅 "반복문 For문 활용하기"를 참고해주세요 :)
2021/01/18 - [코딩/Excel Macro(VBA)] - 반복문 For문 활용하기 (For ... Next ...)
5) If문을 사용해서 "이름" 변수의 왼쪽 첫번째 글자를 조건으로 걸고, 참의 값과 거짓의 값을 정해줍니다.
이제 중요한 부분입니다. 바로 If문에서 "조건"을 정해주는 부분인데요, 우리는 "이름"이라는 변수를 선언해서 9명의 학생들의 이름을 가져오는데까지는 성공했습니다.
하/지/만,
각 학생들의 "성"을 가져와야 1반인지, 2반인지, 3반인지를 구분해서 "반"이라는 변수의 값으로 할당해줄 수 있는데요, "이름"에서 어떻게 "성"을 추출할 수 있을까요? 그것은 바로 "Left"입니다.
쉽게 생각해서 Left = 왼쪽이죠? 비주얼베이직(VBA)에서 Left(이름, 1)는 "이름"이라의 변수의 왼쪽(Left) 한개(1) 값을 가져오라는 뜻이 됩니다.
※ 반대로 생각해보면 Right(이름, 2)는 "이름"이라는 변수의 오른쪽(Right) 두개(2) 값을 가져오라는 뜻이 됩니다. B10 셀의 "박수빈"을 예로 들어보자면, Right(이름, 2)는 "수빈"이 되겠죠?
이 부분을 그대로 활용해서 공식에 대입해보겠습니다. "만약, 변수 '이름'의 왼쪽에서 1개의 값이 '김'이라면"
If 조건 Then ▶ If Left(이름, 1) = "김" Then
참의 값
Else
거짓의 값
End if
학생이 "김"씨라면 1반이기 때문에 참의 값에는 "변수 '반'의 값은 '1반'이다"라고 지정해줍니다.
If 조건 Then
참의 값 ▶ 반 = "1반"
Else
거짓의 값
End if
그/런/데,
이제 Else와 거짓의 값에 대해 조건을 넣어줘야 하는데 쉽지가 않습니다. 학생이 "김/이/박"인 경우 "1/2/3반"에 배정하기로 했으므로 조건이 1개 이상이기 때문인데요, "만약에 학생이 김씨일 경우 1반이고, 아닐 경우 ~" 이후의 조건을 설정할 수가 없습니다. 이씨일 경우는 2반, 박씨일 경우는 3반으로 또 조건이 나뉘기 때문이죠. 이럴 때 사용할 수 있는 것이 바로 Elseif입니다. 조건이 여러 단계로 나뉘는 경우 아래의 공식과 같이 Elseif를 사용하거나, 이를 여러번 반복할 수 있습니다.
If 조건 Then
참의 값
(Elseif 조건 Then
참의 값
Else
거짓의 값)
End if
※ 여기에서 () 부분은 생략이 가능합니다.
Elseif를 사용해서 If조건은 거짓이지만 학생의 성이 "이"씨인 경우라는 추가 조건을 걸고, 이것이 참이라면 2반이라는 값을 지정해줍니다. 이것마저도 else로 거짓이라면 학생이 "김"씨도 "이"씨도 아니라는 뜻이기 때문에 자동으로 "박"씨가 되므로 3반이라는 값을 지정해주면 If문이 완성됩니다.
If 조건 Then
참의 값
Elseif 조건 Then ▶ Elseif Left(이름, 1) = "이" Then
참의 값 ▶ 반 = "2반"
Else
거짓의 값 ▶ 반 = "3반"
End if
여기까지 하셨다면 한가지 잊은 부분 없으신가요? VBA에서 가장 중요한 부분은 바로 "열고 닫기"라는 사실 알고 계시죠? 지금까지 Sub프로시저도 열고, For문도 열고, If문도 열었으니 이제 차례대로 닫아서 코딩을 완성시켜줍니다. End Sub, Next i, End if를 통해서 말이죠.
이제 실행을 해보시면 아래 화면 왼쪽 노란색 부분과 같이 "김"씨는 1반, "이"씨는 2반, "박"씨는 3반으로 값이 주어졌음을 확인하실 수 있답니다. 오늘 다뤄본 내용은 이전 포스팅의 For문과 비슷해서 크게 혼동되는 부분은 없으셨을거라고 생각됩니다. If문은 If ... Then ... 그리고 참의 값과 Else인 경우 거짓의 값을 지정한다는 사실만 기억하셔도 큰 어려움은 없으실거에요. 그럼 오늘도 좋은 하루 되세요 :)