엑셀 VBA에서 Replace는 문자열의 특정 부분을 다른 문자열로 바꾸는 기능을 제공합니다.
Replace는 두 가지 방식으로 사용할 수 있습니다.
- Replace 함수 (문자열 치환)
- Range.Replace 메서드 (엑셀 범위 내 데이터 치환)
1. Replace 함수 (문자열 내 특정 문자 또는 단어 바꾸기)
📌 기본 문법
Replace(원본문자열, 바꿀문자, 새문자 [, 시작위치] [, 바꿀횟수] [, 대소문자구분])
|
- 원본문자열: 변경할 원본 문자열
- 바꿀문자: 원본 문자열에서 찾을 문자열
- 새문자: 바꿀 문자
- 시작위치 (선택 사항): 문자열의 몇 번째 문자부터 찾을지 지정 (기본값: 1)
- 바꿀횟수 (선택 사항): 몇 개의 일치하는 단어를 바꿀지 지정 (기본값: 모두 변경)
- 대소문자구분 (선택 사항): vbBinaryCompare (대소문자 구분) 또는 vbTextCompare (대소문자 구분 안 함)
📌 기본 예제
Sub 문자열_Replace_예제()
Dim str As String
str = "나는 VBA를 공부한다. VBA는 강력하다."
str = Replace(str, "VBA", "엑셀 매크로")
MsgBox str ' "나는 엑셀 매크로를 공부한다. 엑셀 매크로는 강력하다."
End Sub
|
📌 "VBA" → "엑셀 매크로"로 변경됨
📌 일부 단어만 변경 (바꿀횟수 지정)
Sub 특정개수_Replace()
Dim str As String
str = "VBA는 쉽다. VBA는 강력하다. VBA를 배워보자."
str = Replace(str, "VBA", "엑셀", , 1) ' 첫 번째만 변경
MsgBox str ' "엑셀은 쉽다. VBA는 강력하다. VBA를 배워보자."
End Sub
|
📌 "VBA" → "엑셀"로 첫 번째만 변경 (나머지는 유지)
📌 대소문자 구분 없이 변경
Sub 대소문자_구분없이_Replace()
Dim str As String
str = "VBA는 쉽다. vba는 강력하다. VbA를 배워보자."
str = Replace(str, "VBA", "엑셀", , , vbTextCompare)
MsgBox str ' "엑셀는 쉽다. 엑셀는 강력하다. 엑셀를 배워보자."
End Sub
|
📌 "VBA", "vba", "VbA" → "엑셀"로 모두 변경됨
📌 vbTextCompare → 대소문자 구분 없이 변경
2. Range.Replace 메서드 (엑셀 시트에서 값 바꾸기)
📌 기본 문법
Range.Replace(찾을값, 바꿀값 [, LookAt] [, SearchOrder] [, MatchCase] [, SearchFormat])
|
- 찾을값: 변경할 원본 값
- 바꿀값: 바꿀 값
- LookAt (선택 사항): xlWhole (전체 일치) 또는 xlPart (부분 일치, 기본값)
- SearchOrder (선택 사항): xlByRows (행 기준 검색) 또는 xlByColumns (열 기준 검색)
- MatchCase (선택 사항): True (대소문자 구분) 또는 False (구분 안 함, 기본값)
- SearchFormat (선택 사항): 서식을 기준으로 찾을지 여부
📌 엑셀 범위에서 특정 값 변경
Sub 셀값_Replace()
Sheets("Sheet1").Range("A1:A10").Replace "Old", "New"
End Sub
|
📌 A1:A10 범위에서 "Old" → "New"로 변경
📌 대소문자 구분하여 변경
Sub 대소문자_구분_Replace()
Sheets("Sheet1").Range("A1:A10").Replace "VBA", "엑셀", , , True
End Sub
|
📌 "VBA"만 변경하고, "vba" 또는 "VbA"는 변경하지 않음
📌 MatchCase:=True → 대소문자 구분
📌 부분 일치 (xlPart) vs 전체 일치 (xlWhole)
Sub 부분일치_Replace()
Sheets("Sheet1").Range("A1:A10").Replace "VBA", "엑셀", xlPart
End Sub
|
📌 "VBA"가 포함된 단어 전체를 변경
📌 "VBA 강의" → "엑셀 강의"
Sub 전체일치_Replace()
Sheets("Sheet1").Range("A1:A10").Replace "VBA", "엑셀", xlWhole
End Sub
|
📌 "VBA"가 단독으로 있는 셀만 변경
📌 "VBA" → "엑셀", 하지만 "VBA 강의"는 변경되지 않음
📌 행 또는 열 단위로 검색 (SearchOrder)
Sub 행_단위_Replace()
Sheets("Sheet1").Range("A1:C10").Replace "VBA", "엑셀", , xlByRows
End Sub
|
📌 행 단위로 검색하여 "VBA"를 "엑셀"로 변경
Sub 열_단위_Replace()
Sheets("Sheet1").Range("A1:C10").Replace "VBA", "엑셀", , xlByColumns
End Sub
|
📌 열 단위로 검색하여 "VBA"를 "엑셀"로 변경
📌 셀 서식이 특정한 값만 변경 (SearchFormat)
Sub 특정서식_Replace()
Dim rng As Range
Set rng = Sheets("Sheet1").Range("A1:A10")
rng.Replace What:="VBA", Replacement:="엑셀", SearchFormat:=True
End Sub
|
📌 특정 서식을 가진 "VBA"만 "엑셀"로 변경
📝 정리
기능
|
VBA 코드
|
문자열 내 특정 단어 변경
|
Replace(str, "VBA", "엑셀")
|
일부 단어만 변경 (첫 번째만 변경)
|
Replace(str, "VBA", "엑셀", , 1)
|
대소문자 구분 없이 변경
|
Replace(str, "VBA", "엑셀", , , vbTextCompare)
|
엑셀 범위 내 특정 값 변경
|
Range("A1:A10").Replace "Old", "New"
|
대소문자 구분하여 변경
|
Range("A1:A10").Replace "VBA", "엑셀", , , True
|
부분 일치로 변경
|
Range("A1:A10").Replace "VBA", "엑셀", xlPart
|
전체 일치로 변경
|
Range("A1:A10").Replace "VBA", "엑셀", xlWhole
|
행 단위로 변경
|
Range("A1:C10").Replace "VBA", "엑셀", , xlByRows
|
열 단위로 변경
|
Range("A1:C10").Replace "VBA", "엑셀", , xlByColumns
|
특정 서식이 있는 값만 변경
|
Range("A1:A10").Replace "VBA", "엑셀", SearchFormat:=True
|
🔥 VBA의 Replace를 활용하면 문자열과 셀 데이터를 빠르게 수정할 수 있습니다!