본문 바로가기
Computing

Excel에서 VBA 매크로 활용하기: 문자열 체크 및 사용 방법

by 로봇과나무 2024. 3. 6.

Excel은 강력한 데이터 분석 도구로 널리 사용되고 있습니다. 그러나 때로는 기본 함수만으로는 해결하기 어려운 작업들이 있습니다. 이런 경우에 VBA(Visual Basic for Applications) 매크로를 활용하면 더 다양하고 유연한 기능을 구현할 수 있습니다.

본 게시글의 내용을 통해 달성하고자 하는 요구사항

입력 셀 J3에 " abc, cbd, sss[k], ggg, juh[k]" 와 같이 콤마로 구분된 여러 개의 문자열이 들어 있을 때. 각 문자열에 [k]가 들어 있는지를 확인하여 [k]가 들어 있으면 0을 반환하고, 없으면 1을 반환하는 수식을 만들고 싶었습니다. 그 출력 결과는 "1, 1, 0, 1, 0" 이 되도록 수식을 만들고 싶었습니다.

여기에서, 체크하는 문자가 다르게 변경될 경우에도 사용할 수 있도록 체크할 문자를 입력받을 수 있도록 하였습니다.

해당 기능을 수행하기 위해 엑셀의 여러함수들(TRIM, MID, SUBSTITUTE, SEARCH  등등)을

 사용하여 구현하려고 하였으나 잘되지 않았습니다. 해서 VB 매크로를 활용하여 구현하게 되었습니다.

왜 매크로가 필요한가?

Excel에서 VBA 매크로를 사용하는 이유는 다양합니다. 몇 가지 주요 이유는 다음과 같습니다.

1. 복잡한 작업 자동화

Excel의 기본 함수만으로는 처리하기 어려운 복잡한 작업이나 반복적인 작업을 자동화할 수 있습니다. 예를 들어, 특정 문자열이 포함된 셀을 찾아 특정 규칙에 따라 처리하는 작업 등이 해당됩니다.

2. 사용자 정의 함수 구현

VBA를 사용하면 사용자 정의 함수를 만들어 Excel 함수처럼 사용할 수 있습니다. 이로써 사용자가 필요한 특별한 기능을 손쉽게 구현할 수 있습니다.

3. 데이터 처리의 유연성

매크로를 사용하면 데이터를 더 유연하게 처리할 수 있습니다. 복잡한 문자열 분석, 특정 패턴의 데이터 추출, 형식 변경 등 다양한 데이터 처리 작업을 수행할 수 있습니다.

VBA 매크로 사용 방법

1. VBA 열기

  1. 개발 도구 탭 활성화:
    • Excel에서 "파일" 메뉴를 열고 "옵션"을 선택합니다.
    • "옵션" 창에서 "리본 사용자 지정"을 선택하고, "주요 탭"에서 "개발 도구"를 활성화합니다.
  2. VBA 열기:
    • "개발 도구" 탭이 활성화되면, "개발 도구" 탭에서 "Visual Basic"을 선택합니다.
    • 또는, Alt + F11 키를 눌러 VBA 편집기를 열 수 있습니다.

2. 새 모듈 추가

  1. 모듈 추가:
    • VBA 편집기에서 "삽입" 메뉴에서 "모듈"을 선택하여 새 모듈을 추가합니다.

3. 코드 입력

  1. 코드 입력:
    • 새로 추가된 모듈 창에 작성한 VBA 코드를 입력합니다. 예를 들어, 문자열 체크 함수를 작성할 수 있습니다.

4. Excel로 돌아가서 사용

  1. Excel로 돌아가기:
    • VBA 편집기를 닫거나 Excel 창으로 돌아가면 작성한 매크로를 사용할 수 있습니다.

Excel VBA 코드 세부 설명

Excel에서 VBA(Visual Basic for Applications) 코드를 작성할 때 사용되는 기본적인 구조와 함수에 대한 세부 내용을 살펴보겠습니다. 이를 통해 코드를 이해하고 수정하는 데 도움이 될 것입니다.

VBA 코드 기본 구조

VBA 코드는 기본적으로 함수(Function)와 서브루틴(Subroutine)으로 구성됩니다. 여기서는 함수에 대해 간략히 설명하겠습니다.

함수(Function) 구조

Function 함수이름(매개변수) As 반환타입
    ' 코드 내용
    함수이름 = 반환값
End Function
  • 함수이름: 함수의 이름을 정의합니다.
  • 매개변수: 함수에 전달되는 값을 받는 변수입니다.
  • 반환타입: 함수가 반환하는 값의 데이터 타입을 정의합니다.
  • 코드 내용: 함수의 실제 코드 내용을 작성합니다.
  • 반환값: 함수가 반환하는 값을 지정합니다.

문자열 체크 매크로 예제

아래는 VBA를 사용하여 특정 문자열이 포함된 문자열을 체크하고 결과를 도출하는 간단한 예제입니다.

Function CheckString(inputString As String, checkSubstring As String) As String
    Dim segments() As String
    Dim result As String
    Dim i As Integer
    
    ' 문자열을 콤마로 분리하여 배열로 저장
    segments = Split(inputString, ",")
    
    ' 각 세그먼트에 대해 [k]의 포함 여부 확인
    For i = LBound(segments) To UBound(segments)
        If InStr(segments(i), checkSubstring) > 0 Then
            result = result & "0, "
        Else
            result = result & "1, "
        End If
    Next i
    
    ' 마지막 콤마 제거 후 반환
    result = Left(result, Len(result) - 2)
    CheckString = result
End Function

코드 내용 설명

  1. Dim segments() As String: 문자열을 콤마로 분리하여 저장할 배열을 선언합니다.
  2. segments = Split(inputString, ", "): 입력된 문자열을 콤마로 분리하여 배열에 저장합니다.
  3. For i = LBound(segments) To UBound(segments): 배열에 저장된 각 세그먼트에 대해 반복합니다.
  4. If InStr(segments(i), checkSubstring) > 0 Then: 각 세그먼트에서 [k]의 포함 여부를 확인합니다.
  5. result = result & "0, " 또는 result = result & "1, ": 각 세그먼트에 대한 결과를 result에 추가합니다.
  6. result = Left(result, Len(result) - 2): 마지막 콤마를 제거합니다.
  7. CheckString = result: 최종 결과를 반환합니다.

이렇게 코드를 이해하면 원하는 작업에 맞게 수정하거나 새로운 함수를 작성하는 데 도움이 됩니다.

사용 예제

Excel 워크시트에서 함수를 사용할 때는 =를 입력하고, 함수명을 입력한 후 매개변수를 전달합니다. 예를 들어, =CheckString(J3, "[k]")와 같이 사용할 수 있습니다. 여기서, CheckString은 VB 매크로엣 만든 함수명이고요. J3는 체크하려는 문자열이 들어 있는 셀이고요.   "[k]" 부분이 체크하고자 하는 문자열의 내용입니다.

마무리

VBA 매크로를 사용하면 Excel의 기능을 확장하고 더욱 효율적으로 작업할 수 있습니다. 매크로를 사용하는 데에는 초기 학습이 필요할 수 있지만, 복잡한 작업을 자동화하고 데이터를 유연하게 처리할 수 있는 장점이 있습니다. 이러한 유연성은 데이터 분석 및 업무 처리를 보다 효율적으로 만들어줍니다. 추가로 궁금한 점이나 도움이 필요한 부분이 있다면 언제든 물어보세요!

'Computing' 카테고리의 다른 글

PC 시작 시 모바일 핫스팟 활성화 자동화 방법  (0) 2023.08.30