Anne-Mie는 와일드 카드 (?)를 사용하여 Excel에서 검색 할 수 있다는 것을 알고 있지만 바꾸기 문자열에 와일드 카드를 사용할 수 있는지 궁금합니다. 예를 들어, 그녀는 “abde”를 검색하고 “aa * de”로 바꾸려고합니다. 여기서 별표는 임의의 문자 수를 나타내거나 전혀 나타내지 않습니다.

짧은 대답은 설명한대로 Excel에서이 작업을 수행 할 수있는 방법이 없다는 것입니다. 텍스트 값의 두 번째 문자 만 “b”에서 “a”로 변환하려는 경우 다음과 같이 쉽게 수행 할 수 있습니다.

=REPLACE(A1,2,1,"a")

그러나 이것은 아마도 여러분이 원하는 것이 아닐 것입니다. “바꿀 내용”텍스트에 와일드 카드를 사용하는 방법을 원합니다. 이러한 문자열 교체를 수행하는 기술 용어는 REGEX라고하며 _Regular Expressions의 약자입니다. REGEX는 Perl과 같은 언어로 시작되었지만 너무 강력해서 다른 많은 프로그래밍 언어에 추가되었습니다.

Excel에서 사용되는 VBA도 예외는 아닙니다. REGEX를 사용하는 첫 번째 단계는이를 켜는 것입니다. VBA 편집기에서 도구 | 참조를 클릭 한 다음 Microsoft VBScript 정규식 옵션 옆에 확인 표시가 있는지 확인합니다. 사용 가능한 참조 버전이 두 개 이상있는 경우 최신 버전을 선택합니다.

이 참조를 활성화하면 REGEX 객체를 생성 할 수 있습니다. 기술적으로는 매크로에서 바인딩이 발생하는 방식에 따라 해제 상태로 둘 수 있습니다. 후기 대.

의 장단점에 대한 토론 그러나 초기 바인딩은이 팁의 범위를 벗어나므로 계속해서 REGEX 참조를 켜십시오.

REGEX 개체에는 Test 메서드와 Pattern 속성이 있습니다. 즉, Pattern 속성을 설정 한 다음 Test 메서드가 패턴이 있는지 확인합니다. REGEX 개체에는 대체를 수행하는 데 사용되는 Replace 메서드도 있습니다.

계속하기 전에 정규 표현식이 매우 복잡하고 “괴상”할 수 있음을 이해하는 것이 중요합니다. 주위에 방법이 없습니다. 정규 표현식으로 작업하는 방법은 전체 책의 주제였습니다. 다행히도이 팁의 목적 상 표현은 본질적으로 다소 단순합니다. 이 경우 “^ ab.de $”패턴을 사용합니다. 이 패턴은 “ab”로 시작하고 (^로 표시) 임의의 표현식 (으로 표시)이 뒤 따르는 단어를 나타냅니다

하나 이상의 문자 (마침표로 표시)와 “de”로 끝나는 ($로 표시)으로 구성됩니다.

다음은 실제 대체를 수행하기 위해 REGEX 개체의 사용을 구현하는 코드입니다.

Public Function SearchNReplace1(Pattern1 As String, _   Pattern2 As String, Replacestring As String, _   TestString As String)

Dim reg As New RegExp

reg.IgnoreCase = True     reg.MultiLine = False     reg.Pattern = Pattern1     If reg.Test(TestString) Then         reg.Pattern = Pattern2         SearchNReplace1 = reg.Replace(TestString, ReplaceString)

Else         SearchNReplace1 = TestString     End If End Function

이 매크로를 사용하려면 A 열에서 변경하려는 문자열로 시작하십시오. 첫 번째 문자열이 A1 셀에 있다고 가정하면 변경된 텍스트를 가져 오기 위해 다음을 다른 셀에 배치 할 수 있습니다.

=SearchNReplace1("^ab.*de$","^ab","aa",A1)

이것은 찾고자하는 패턴이 “^ ab. * de $”임을 매크로에 알려줍니다.

(첫 번째 매개 변수), “^ ab”를 “aa”로 바꾸려고합니다.

이 수식은 열 아래에 붙여 넣을 수 있으며 A 열의 변환으로 끝납니다. 여기서 문자열 “abde”는 “aade”로 대체됩니다.

어떤 이유로 VBA에서 REGEX 식을 사용하지 않으려는 경우 선택한 셀 그룹을 간단히 살펴보고 “ab”로 시작하고 “de”로 끝나는 셀을 찾는 매크로를 만들 수 있습니다. 그런 다음 시작 부분을 “aa”로 바꿉니다.

Sub SearchNReplace2()

Dim sFindInitial As String     Dim sReplaceInitial As String     Dim iLenInitial As Integer     Dim sFindFinal As String     Dim sReplaceFinal As String     Dim iLenFinal As Integer     Dim sTemp As String     Dim rCell As Range

sFindInitial = "ab"

sReplaceInitial = "aa"

sFindFinal = "de"

sReplaceFinal = "de"



For Each rCell In Selection         sTemp = rCell.Value         iLenInitial = Len(sFindInitial)

iLenFinal = Len(sFindFinal)

If Left(sTemp, iLenInitial) = sFindInitial And _             Right(sTemp, iLenFinal) = sFindFinal Then             sTemp = Mid(sTemp, iLenInitial + 1)

sTemp = Left(sTemp, Len(sTemp) - iLenFinal)

sTemp = sReplaceInitial & sTemp & sReplaceFinal             rCell.Value = sTemp         End If     Next     Set rCell = Nothing End Sub

이 루틴을 사용하려면 변경하려는 셀을 선택한 다음 매크로를 실행하면됩니다. 또한 필요에 따라 sFindInitial, sReplaceInitial, sFindFinal 및 sReplaceFinal 변수를 변경해야합니다.

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (11170)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁 버전을 찾을 수 있습니다.

link : / excel-Wildcards_in_Replace_With_Text [ '바꿀 내용’텍스트의 와일드 카드].