본문 바로가기
Microsoft/Excel

셀 내 특정 문자에 서식 적용하기 (엑셀)

by yororing 2024. 10. 7.

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) 클릭

  • 변경 적용된 것을 확인!