Excel 매크로: 전체 셀 내용을 교체합니다. 1을 바꾸되 10, 11, 21 등은 바꾸지 마세요.

Excel 매크로: 전체 셀 내용을 교체합니다. 1을 바꾸되 10, 11, 21 등은 바꾸지 마세요.

Excel 스프레드시트에서 많은 양의 숫자를 단어로 바꿔야 합니다. 예:

1 = hello
12 = goodbye
4 = cat

등. 표준 검색 및 바꾸기를 사용하여 수행할 수 있지만 작업해야 할 목록이 너무 많아서(약 240개의 숫자/단어 콤보) 매크로를 사용해야겠다고 생각했습니다.

나는 이것을 가지고있다:

Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="1", Replacement:="hello"
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
Next

End Sub

하지만 12개 중 1개를 대체하므로 셀은 작별 인사 대신 hello2를 읽습니다. '전체 셀 내용 일치'가 작동하는 방식으로 특정 숫자만 포함하는 셀에만 영향을 미치도록 하려면 어떻게 해야 합니까?

도움을 주시면 감사하겠습니다.

답변1

시트의 모든 값이 교체되는 한 순서를 변경하는 것은 괜찮습니다. 시트에 11개가 포함되어 있지만 교체되지 않은 경우 순서를 변경하면 여전히 hello1로 교체됩니다.
전체 셀 일치를 사용하려면 지정하십시오.

,LookAt:=xlWhole

바꾸기 메서드에 대한 또 다른 매개 변수로 사용됩니다. 바꾸기는 Range에서 유효한 방법이므로 For 루프가 필요하지 않습니다. 대신 지정할 수 있습니다.

Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole  
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole

답변2

더 나은 해결책이 있는지는 잘 모르겠지만 내 생각에는 그것들을 역순으로 배치하는 것 같습니다. 예를 들어:

Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
mycell.Replace What:="1", Replacement:="hello"
Next

End Sub

이 경우 12가 먼저 "goodbye"로 대체되고, 1을 "hello"로 대체하는 줄이 나오면 이미 변경되었을 것입니다.

다시 말하지만 더 나은 해결책이 있을 수 있지만 설명하신 매개변수를 빠르게 수정하는 데에는 이것이 효과가 있을 것 같습니다.

관련 정보