[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 String, ByVal pattern As String) As 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/