Gary는 “sys”와 같은 약어를 찾아서 바꾸고 “systems”로 바꾸려고합니다. 문제는 그가 모든 발생을 교체하면 기존의 “system”인스턴스를 “systemstem”으로 변환한다는 것입니다. Gary는 각 발생을 검사하고 개별적으로 교체 할 수 있지만 영원히 걸릴 것입니다. 그는 Excel이 Word에서와 같이 “sys”의 “전체 단어”항목 만 “systems”로 바꾸도록하는 방법이 있는지 궁금합니다.

Excel의 찾기 및 바꾸기 기능에 익숙한 사용자는 처음에는 “전체 셀 내용 일치”를 사용할 수 있다고 생각할 것입니다.

작업을 수행하기 위해 설정합니다. 그러나 약어 “sys”가 셀에서 유일한 경우에만 작동합니다. Gary의 상황에서는 그렇지 않습니다. 그는 “sys”( “sys admin”또는 “A sys check is needed”에서와 같이)를 포함하는 구와 전체 문장을 가지고 있습니다. 따라서 Word의 “전체 단어”설정과 같은 것에 대한 그의 요청.

이를 염두에두고 몇 가지 시도해 볼 수 있습니다. 가장 적합한 솔루션은 워크 시트의 텍스트 특성에 따라 달라집니다.

예를 들어, 유일하게 가능한 혼동 지점이 “시스템”이라는 단어 인 경우

그러면 “system”을 “\ {[]}”와 같은 고유 한 것으로 바꾸는 것이 가장 쉽습니다. (대부분의 데이터에서 고유하기 때문에 중괄호와 대괄호를 좋아하는 경향이 있습니다.) 그런 다음 “sys”를 “systems”로 바꾸고 마지막으로 “\ {[]}”를 “system”으로 바꿉니다.

“시스템”외에 다른 혼동 지점이있는 경우 찾을 내용 텍스트에 공백을 추가 할 수 있습니다. 즉, “sys”(공백 포함)를 검색하고 “시스템”(다시 공백으로)으로 바꿉니다. 이렇게하면 sys 뒤에 구두점이 나오지 않고 셀의 시작 부분에서 발생하지 않고 셀 끝에서 발생하지 않는 한 모든 발생을 올바르게 찾을 수 있습니다.

물론이 정보의 일부를 얻기 위해 추가 검색을 수행 할 수 있습니다. 예를 들어 “sys”(끝에 만 공백)를 검색 할 수 있습니다.

셀의 시작 부분에서 발생을 찾습니다. “sys”(시작 부분에만 공백)를 검색하면 공백이 앞에 나오는 “system”과 일치하기 때문에 검색하는 것은 좋지 않습니다. 순차 검색에서 “sys”다음에 마침표, 쉼표, 물음표, 느낌표, 세미콜론 등을 검색 할 수도 있습니다.

매크로 사용을 선호하는 경우 다음은 문제에 접근 할 수있는 방법의 한 예입니다. 매크로는 찾고자하는 것과 대체 할 것을 프롬프트합니다.

Sub ReplaceOnlySpecifirdWord()

Dim c As Range, rng As Range, rngArea As Range     Dim vFind As String, vReplace As String     Dim v As Variant     Dim arrSplit As Variant     Dim s As String     Dim i As Integer, n As Long     Dim b As Boolean     Const csDELIMITER = " "



On Error Resume Next     ' Reference Constants only     Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)

If rng Is Nothing Then         MsgBox "There are no constants on active sheet...", vbExclamation         Exit Sub     End If     On Error GoTo 0

' Get Find and Replace strings     v = InputBox(Prompt:="Please enter String to be replaced.")

If v <> "" Then         vFind = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

v = InputBox(Prompt:="Please enter Replace String.")

If v <> "" Then         vReplace = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

Application.ScreenUpdating = False     Application.Calculation = xlCalculationManual     n = 0     For Each rngArea In rng.Areas         For Each c In rngArea.Cells             b = False             arrSplit = Split(c.Value, csDELIMITER)

For i = LBound(arrSplit) To UBound(arrSplit)

If arrSplit(i) = vFind Then                     arrSplit(i) = vReplace                     n = n + 1                     b = True                 End If             Next i             If b Then                 s = vbNullString                 For i = LBound(arrSplit) To UBound(arrSplit)

s = s & arrSplit(i)

If i <> UBound(arrSplit) Then                         s = s & csDELIMITER                     End If                 Next i                 c.Value = s             End If         Next c     Next rngArea

Application.Calculation = xlCalculationAutomatic     MsgBox "Replaced " & n & " words...", vbInformation End Sub

매크로는 각 셀의 모든 단어를 차례로 찾아 작업을 수행합니다.

단어가 찾고있는 것과 일치하면 대체됩니다. 그런 다음 셀 내용이 다시 합쳐집니다.

이 접근 방식에는 단점이 있습니다. 일치는 매우 문자 그대로입니다. 즉, “sys”는 “sys”와 일치하지만 “Sys”, “SYS”또는 “sys”뒤에 문장 부호가있는 것은 일치하지 않습니다. (매크로는 단어 사이의 구분 기호로 공백을 사용합니다.)

_ 참고 : _

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

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

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

이 팁 (13391)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.