<엑셀VBA 입문 18강> indexOf 함수의 확장

<엑셀VBA 입문 18강> indexOf 함수의 확장

아래 질문을 받아서 잠시 짬을 내 글을 써봅니다.

안녕하세요. 올려주신 엑셀VBA 입문 5강을 잘 읽었습니다!
그런데 예시 들어주신 INDEXOF 라든지 INCLUDE 의 경우
원하는 단어가 (1) 포함되는 경우 (2) 포함되지 않는 경우 이렇게 2가지만 구분할 수 있습니다.

저는 3가지 이상의 경우의 수로 구분하고 싶은데 가능할까요?

예시. 파주, 양주 라는 단어가 포함일 경우 경기도라는 값이 나오고
속초, 양양 이라는 단어가 포함될 경우 강원도라는 값이 나오게 할 수 있을까요?

vba 에서 기본적인 indexOf 함수는 아래처럼 짤 수 있습니다.

Function indexOf(cell, textToFind)

    ‘cell의 값을 가져옴
    Dim val
    val = Range(cell, cell).Value

    ‘cell의 값 1번째 글자부터 textToFind 값 찾기
    Dim idx
    idx = InStr(1, val, textToFind, vbTextCompare)

    ‘인덱스 값을 리턴

    ‘리턴값이 1 이상이면 포함되는 경우이고, 리턴값이 0 이면 포함되지 않는 경우
    indexOf = idx

End Function

이 기본적인 indexOf는 원하는 단어가 (1) 포함되는 경우 (2) 포함되지 않는 경우 이렇게 2가지만 구분할 수 있습니다.

리턴값이 1 이상이면 포함되는 경우이고, 리턴값이 0 이면 포함되지 않는 경우입니다.

만약 3가지 이상의 경우의 수로 구분하려면 다음과 같이 작성하면 됩니다.

Function indexOf2(cell)

    ‘cell의 값을 가져옴
    Dim val
    val = Range(cell, cell).Value

    ‘cell의 값 1번째 글자부터 값 체크
    If InStr(1, val, “파주”, vbTextCompare) > 0 Then
        indexOf2 = “경기도”
   
    ElseIf InStr(1, val, “양주”, vbTextCompare) > 0 Then
        indexOf2 = “경기도”
       
    ElseIf InStr(1, val, “속초”, vbTextCompare) > 0 Then
        indexOf2 = “강원도”
   
    ElseIf InStr(1, val, “양양”, vbTextCompare) > 0 Then
        indexOf2 = “강원도”
       
    Else
        ‘아무 것도 해당하지 않을 경우
        indexOf2 = “없음”
    End If

End Function

실제 함수의 사용 결과는 아래와 같습니다.