메뉴
해결 HOT M365윈도우11

암시적 교차 연산자 일괄 삭제

p
12월 20일 조회 1,473
함수명 앞에 붙는 암시적 교차 연산자(@)를 일괄 삭제할 수 있는 방법이 있을까요?

@를 공백으로 "바꾸기"를 하면, =[@3월]+[@4월] 와 같이 함수명이 아닌 표이름앞에 붙는 @까지 바뀌어서 수식이 엉망이 되네요...

댓글 15

마
마법의손 12월 20일
삭제된 댓글입니다.
p
puroome 작성자 12월 20일
@마법의손 님 답변 감사드려요~
아래와 같이 @을 공백으로 바꾸는 매크로(교체1)는 잘 작동하는데, 알려주신 [@을 바꾸는 매크로(교체2)는 작동을 안하네요...
Sub 교체1()

    Dim ws As Worksheet
    Dim rng As Range
    Dim findText As String
    Dim replaceText As String

    ' 바꿀 문자열은 "@"입니다.
    findText = "@"
    ' 바꾸려는 문자열은 빈칸입니다.
    replaceText = ""

    ' 활성화된 시트를 가져옵니다.
    Set ws = ActiveSheet

    ' 범위를 A1:SF500으로 한정합니다.
    Set rng = ws.Range("A1:SF500")
    
    ' 범위 내에서 찾을 문자열이 포함된 수식을 바꿀 문자열로 대체합니다.
    rng.Replace What:=findText, Replacement:=replaceText, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

End Sub
Sub 교체2()

    Dim ws As Worksheet
    Dim rng As Range
    Dim findText As String
    Dim replaceText As String

    ' 바꿀 문자열은 "[@"입니다.
    findText = "[@"
    ' 바꾸려는 문자열은 "[AT표시"입니다.
    replaceText = "[AT표시"

    ' 활성화된 시트를 가져옵니다.
    Set ws = ActiveSheet

    ' 범위를 A1:SF500으로 한정합니다.
    Set rng = ws.Range("A1:SF500")
    
    ' 범위 내에서 찾을 문자열이 포함된 수식을 바꿀 문자열로 대체합니다.
    rng.Replace What:=findText, Replacement:=replaceText, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

End Sub

 
마
마법의손 12월 20일
삭제된 댓글입니다.
p
puroome 작성자 12월 20일
@마법의손 님 간단한 예시로 샘플을 만들었습니다~!

교체1 매크로는 잘 작동하는데, 교체2 매크로는 잘 안되네요..

교체2 매크로가 작동해야, 두개를 조합해서 [@를 제외한 @만 공백으로 교체할텐데요...
마
마법의손 12월 20일
삭제된 댓글입니다.
p
puroome 작성자 12월 20일
@마법의손 님 ㅠㅠ 논리만 따지면 정말 간단한 논리같은데, 며칠째 해결이 안되네요...
마
마법의손 12월 20일
삭제된 댓글입니다.
p
puroome 작성자 12월 20일
@마법의손 님 너무 너무 감사드려요. 제가 처음에 만든 샘플에서 완벽하게 작동하네요~!

그런데... 제가 다른 샘플을 추가해서 작동시켰더니... 추가된 것에서는 [@에서 @가 사라져버리네요..

추가샘플을 올렸습니다!
마
마법의손 12월 20일
삭제된 댓글입니다.
p
puroome 작성자 12월 20일
@마법의손 님 ㅠㅠ  [@ 이 아닌 그냥 [ 이 사라져버리네요... ㅠㅠ

죄송해요.. 첨부터 다양한 샘플을 생각했어야하는데, ㅠㅠ
마
마법의손 12월 21일
삭제된 댓글입니다.
마
마법의손 채택된 답변 12월 21일
@puroome 님
replacements = Array( _
        Array("[ @", "[AT표시"), _
        Array("[@", "[AT표시"), _
        Array("@", ""), _
        Array("[AT표시", "[@"), _
        Array("수식=", "=") _
    )

이것만 바꿔주면 됩니다..와일드카드 때문에 그랬네요..잘 처리되네요

 
p
puroome 작성자 12월 21일
@마법의손 님 와!!!! 이제 완벽해요!!!! 너무 감사드려요!!

장시간 너무 너무 감사드려요!! 정말 너무 멋진 고수님들 많은 것같아서, 한없이 작아지네요..

연말연시 행복한 일만 가득하세요~~!!
마
마법의손 12월 21일
@puroome 님  

이러면서 저도 배우는게 많습니다..^^ 전 이런문제 좋아합니다..

연말연시 행복하시고 새해복많이 받으시고 미리 크리스마스 입니다..

 
마
마법의손 12월 20일
삭제된 댓글입니다.

질문답변 게시판의 최근 글

스크랩 완료