Computer >> 컴퓨터 >  >> 소프트웨어 >> Office

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

Microsoft Excel을 사용하다 보면 특정 패턴을 찾기 위해 정규식(Regex)이 필요한 순간이 있습니다. 하지만 안타깝게도 엑셀은 기본적으로 정규식을 지원하지 않기 때문에 많은 분들이 어려움을 겪곤 합니다. 이 글에서는 VBA로 RegExMatch 사용자 정의 함수를 만들고, 이를 COUNTIF 함수와 결합해 정규식 패턴과 일치하는 셀의 개수를 세는 방법을 단계별로 소개합니다.

엑셀에서 COUNTIF로 정규식 개수 세기: 상세 단계

아래 과정을 따라 하면 VBA 헬퍼 함수와 COUNTIF를 활용해 엑셀에서 정규식 일치 항목을 손쉽게 집계할 수 있습니다.

1단계: 정규식 매칭용 데이터 준비

연락처 목록(Contact List) 데이터셋이 있다고 가정해 보겠습니다. 이 표에서 각 항목이 유효한 전화번호 형식인지 확인하기 위해 COUNTIF 함수와 정규식을 함께 사용할 것입니다.

아래 이미지처럼 연락처 목록이 준비되어 있으며, 여기서 어떤 값이 전화번호 패턴에 부합하는지 검토하게 됩니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

2단계: VBA로 사용자 정의 헬퍼 함수 만들기

엑셀이 정규식을 직접 지원하지 않기 때문에, VBA 코드를 사용해 RegExMatch 함수라는 사용자 정의 헬퍼 함수를 먼저 만들어야 합니다. 아래 지침을 따라 해보세요.

  • 먼저 통합 문서가 열려 있는 상태에서 ALT + F11 키를 눌러 "Microsoft Visual Basic for Applications" 편집기를 엽니다.
  • 다음으로 메뉴에서 삽입(Insert) 옵션을 선택한 뒤 "모듈(Module)"을 클릭합니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • 새 모듈 창에 아래 코드를 붙여넣고 저장합니다.
Public Function RegExMatch(input_reg_range As Range, reg_pattern As String, Optional reg_match As Boolean = True) As Variant
  Dim WX() As Variant
  Dim Input_Row, Input_Col, cnt_Rows, cnt_Cols As Long
  On Error GoTo ErrHandl
  RegExMatch = WX
  Set Wregex = CreateObject("VBScript.RegExp")
  Wregex.pattern = reg_pattern
  Wregex.Global = True
  Wregex.MultiLine = True
  If True = reg_match Then
    Wregex.ignorecase = False
  Else
    Wregex.ignorecase = True
  End If
  cnt_Rows = input_reg_range.Rows.Count
  cnt_Cols = input_reg_range.Columns.Count
  ReDim WX(1 To cnt_Rows, 1 To cnt_Cols)
  For Input_Row = 1 To cnt_Rows
    For Input_Col = 1 To cnt_Cols
      WX(Input_Row, Input_Col) = Wregex.Test(input_reg_range.Cells(Input_Row, Input_Col).Value)
    Next
  Next
  RegExMatch = WX
  Exit Function
ErrHandl:
    RegExMatch = CVErr(xlErrValue)
End Function

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • 그다음 워크시트에서 사용할 정규식 패턴을 준비합니다. 아래 패턴은 미국식 전화번호 형식(예: 123-456-7890, (123) 456-7890 등)을 인식하는 식입니다.

(\(\d{3}\)|\d{3})[-\.\s]?\d{3}[-\.\s]?\d{4}\b

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

더 읽어보기: 엑셀에서 정규식 패턴 찾는 방법

3단계: 수식으로 정규식 일치 확인 후 개수 세기

RegExMatch 함수를 준비했다면, 이제 실제 문자열에 적용해 패턴과 일치하는지 확인할 차례입니다.

  • 결괏값을 표시할 셀(C7)을 선택하고 아래 수식을 입력한 뒤 아래 방향으로 채워 넣습니다.

여기서 RegExMatch 함수는 문자열에 주어진 정규식 패턴과 일치하는 부분이 있는지 TRUE 또는 FALSE로 반환합니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • ENTER 키를 눌러 결과를 확인합니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • 이후 "채우기 핸들(Fill Handle)"을 끌어 아래 열 전체에 수식을 복사합니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • 이제 전화번호가 포함된 셀의 개수를 세겠습니다. C15 셀에 아래 수식을 입력합니다.

여기서 COUNTIF 함수는 범위 "C7:C13"에서 조건 "TRUE"에 해당하는 셀의 개수를 계산합니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

  • 마지막으로 키보드의 ENTER 키를 누르면 결과가 표시됩니다.
  • 이렇게 COUNTIF 함수와 정규식을 활용해 엑셀에서 원하는 패턴의 개수를 성공적으로 구할 수 있습니다.

엑셀에서 COUNTIF로 정규식(Regex) 패턴 개수 세기 – 단계별 완벽 가이드

더 읽어보기: 엑셀에서 패턴 매칭 수행하는 방법

연습용 통합 문서 다운로드

글을 읽는 동안 직접 따라 해볼 수 있도록 연습용 통합 문서를 다운로드하세요.

마무리

이 글에서는 엑셀에서 정규식과 함께 COUNTIF를 활용해 패턴 개수를 세는 방법을 단계별로 살펴보았습니다. 첨부된 연습용 통합 문서를 내려받아 직접 실습해 보시길 권합니다. 도움이 되었기를 바라며, 여러분의 경험과 의견을 댓글로 남겨주세요!

함께 읽으면 좋은 글

  • 엑셀에서 VBA 없이 REGEX 사용하는 방법
  • 엑셀에서 REGEX로 패턴 매칭하는 방법
  • 엑셀에서 RegEx로 데이터 필터링하는 방법
  • 엑셀에서 Regex로 텍스트 찾기 & 바꾸기
  • 엑셀에서 정규식 패턴을 찾아 바꾸는 방법
  • 엑셀에서 RegEx로 데이터 유효성 검사하기

<< 엑셀 정규식 | 문자열 조작 | 엑셀 배우기로 돌아가기

무료 고급 엑셀 연습 문제와 해답 받기!