00 개요
- 엑셀에서 어느 셀 내 특정 문자에 원하는 서식 적용하는 방법에 대한 정리
- Excel에서 셀 내 특정 부분(예: 'flexlmdenial')에 원하는 서식 (예, 굵게 만들고 특정 색상)을 적용하려면, VBA(Visual Basic for Applications)를 사용해야 함
- Excel은 기본적으로 셀 내 텍스트의 일부분에 서식을 적용하는 기능을 제공하지 않기 때문에, VBA를 통해 세밀한 제어가 가능함
- Conditional Formatting으로는 불가능
- 기본 버전 (하드 코딩): 셀 내 특정 문자를 하드 코딩으로 지정하여 (예, 'flexlmdenial') 부분을 굵게 하고, 특정 색상(예: 이쁜 보라색)을 적용하는 VBA 코드
- 심화 버전 (소프트/동적 코딩): 찾고자 하는 단어들 및 색상을 동적으로 지정하는 방법 - 찾고자 하는 단어들 및 색상을 지정하는 셀을 지정하고, 이 셀에 있는 각 단어를 대해 굵게 하고, 특정 색상(RGB)을 적용하는 VBA 코드
01 기본 버전: VBA 하드 코딩
1. VBA 코드 편집기 열기
- Alt + F11을 눌러 VBA 편집기 열기 가능
2. 모듈 추가하기
- 단 메뉴에서 삽입(Insert) → 모듈(Module) 선택
3. VBA 코드 작성하기
- 다음 코드를 복사하여 모듈 창에 붙여넣음
Sub BoldAndColorText_certaintext()
Dim rng As Range
Dim cell As Range
Dim startPos As Integer
Dim textToFind As String
textToFind = "certain_text"
' 현재 선택된 범위에서 작업
Set rng = Selection
' 선택된 각 셀에 대해 작업
For Each cell In rng
' 셀에 원하는 텍스트가 있는지 확인
If InStr(cell.Value, textToFind) > 0 Then
' 시작 위치 찾기
startPos = InStr(cell.Value, textToFind)
' 텍스트를 굵게 만들고 색상을 빨간색으로 설정
With cell.Characters(startPos, Len(textToFind)).Font
.Bold = True
.Color = RGB(125, 122, 240) ' 이쁜 보라색
End With
End If
Next cell
End Sub
4. 모듈 및 파일 저장하기
- 만약 현재 파일이 .xlsx 확장자로 저장되어있을 경우 다음과 같은 창이 뜨며 매크로 저장이 불가함
- 내용: the following features cannot be saved in macro-free workbooks: VB project
- 해결 방법
- 해당 엑셀 파일을 다른 이름으로 저장하기 하여 .xlsx가 아닌 .xlsm 확장자(Excel Macro-Enabled Worknook)로 저장하면 매크로 사용 가능할 것!
- → 해당 엑셀 파일을 .xlsm 확장자로 저장 후 다시 모듈 추가, VBA 코드 작성하여 저장하기
5. 코드 실행하기
- 적용하고자 하는 셀 범위 선택하기
- 매크로 실행(Macro) 창을 열기 위해 Alt + F8을 누르기
- 또는 Developer > Macros 클릭
- BoldAndColorText_certaintext라는 매크로 선택 > 실행(Run) 클릭
- 변경 적용된 것을 확인!
02 심화 버전: VBA 소프트/동적 코딩
- 다음은 I13 및 I14 셀에 찾고자 하는 단어들 및 특정 색상(RGB)을 입력하고, 이 단어들에 대해 선택된 범위 내에서 텍스트를 굵고 입력한 색상으로 변경하는 방식
1. VBA 코드 편집기 열기
- (위와 동일)
2. 모듈 추가하기
- (위와 동일)
3. 특정 문자를 입력할 셀 선택
- 예) I13 (단어 입력), I14 (색상 - RGB 값 - 입력)
4. VBA 코드 작성하기
Sub BoldAndColorTextDynamic()
Dim rng As Range
Dim cell As Range
Dim startPos As Integer
Dim textToFind As String
Dim searchRange As Range
Dim word As Variant
Dim colorValues() As String
Dim rColor As Integer, gColor As Integer, bColor As Integer
' 현재 선택된 범위에서 작업
Set rng = Selection
' 찾고자 하는 단어들을 I13 셀에서 가져옵니다. 여러 단어는 쉼표로 구분.
textToFind = Range("I13").Value
' RGB 색상 값을 I14 셀에서 쉼표로 분리하여 가져오기
colorValues = Split(Range("I14").Value, ",")
' R, G, B 값을 각각 설정
rColor = CInt(Trim(colorValues(0))) ' 첫 번째 값 (R)
gColor = CInt(Trim(colorValues(1))) ' 두 번째 값 (G)
bColor = CInt(Trim(colorValues(2))) ' 세 번째 값 (B)
' 쉼표로 단어들을 분리하여 배열에 저장
Dim words() As String
words = Split(textToFind, ",")
' 선택된 각 셀에 대해 작업
For Each cell In rng
' 각 단어에 대해 작업
For Each word In words
word = Trim(word) ' 공백 제거
' 셀에 원하는 텍스트가 있는지 확인
If InStr(cell.Value, word) > 0 Then
' 시작 위치 찾기
startPos = InStr(cell.Value, word)
' 텍스트를 굵게 만들고 동적으로 지정된 색상으로 설정
With cell.Characters(startPos, Len(word)).Font
.Bold = True
.Color = RGB(rColor, gColor, bColor) ' 동적으로 지정된 색상 사용
End With
End If
Next word
Next cell
End Sub
5. 모듈 및 파일 저장하기
- (위와 동일)
6. 단어 입력하기
- 엑셀에서 I13 셀에 찾고자 하는 단어들을 쉼표(,)로 구분하여 입력, I14 셀에 원하는 색상 R, G, B 값을 쉼표(,)로 구분하여 입력하기
- 예)
- I13 칸 → licenseusagedaily, licenseutildaily, licenseutilfeaturedaily, hourly
- I14칸 → 125, 122, 240
7. 코드 실행하기
- 적용하고자 하는 셀 범위 선택하기
- 매크로 실행(Macro) 창을 열기 위해 Alt + F8을 누르기
- 또는 Developer > Macros 클릭
- BoldAndColorText_certaintext라는 매크로 선택 > 실행(Run) 클릭
- 변경 적용된 것을 확인!