◽ VB & VBA

[VBA] 엑셀에서 정규식 검색하기 : regular expression search


환경

  MicroSoft 365 구독형을 사용중인데, 구독형이라 늘 최신은 유지하고 있다. 그런데 Ctrl+F에 정규식 사용 옵션이 없다. 함수도 인자값에 정규식을 넣어도 오류를 뱉어내고 해서 찾아보니 VBA를 활용하면 되어서 간단히 정리하려고 한다.


 

1. VBA를 열어준다.

  엑셀 화면에서 Alt+F11을 누르면 VBA가 활성화되는데 적용할 엑셀 탭을 더블클릭하면 아래와 같이 코드를 입력할 수 있는 창이 열린다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub RegExSearch()
    Dim inputRange As Range
    Dim pattern As String
    Dim cell As Range
    
    
    Set inputRange = Range("A1:F18")
    
    pattern = "[f]"
    
    For Each cell In inputRange
    
        If RegExMatch(cell.Value, pattern) Then
                cell.Font.Color = vbRed
        End If
    Next cell
End Sub
 
 
Function RegExMatch(ByVal inputText As StringByVal pattern As StringAs Boolean
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.pattern = pattern
    RegExMatch = regex.Test(inputText)
End Function
cs

 

 

 

2. 설명

  코드는 F5를 누르면 실행이 되는데, Range는 영역이고, pattern은 정규식 검색할 값을 넣으면 된다, 그리고 조건식에 true가 성립되면 vbRed로 폰트색을 빨간색으로 변경하게끔 만들어 두었다. 아래의 그림 참고.

 

3. 평가.

  최신 구독형 오피스 제품인데도 이런 기본 기능이 없으니, 코드를 작성해서 사용해야하는게 불편하지만, 커스텀이 되기 때문에 개발자 입장에서는 좋은 발견이라고 생각한다.

 

 


참고 :

- https://support.intermedia.com/app/articles/detail/a_id/23648/~/backup-for-microsoft-365%3A-how-to-use-advanced-search-capabilities

- https://www.ablebits.com/office-addins-blog/excel-regex-formulas/


 

푸터바