엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

엑셀(Excel)/VBA

엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

 

환경: Microsoft Excel 365

 

문자나 숫자 앞에 작은 따움표가 있으면 어떻게 될까요? 수식 입력줄에는 나타나지만 셀에 표시되지 않습니다. 작은 따움표는!@#$%^&*()~"',.? 등의 특수문자를 표시할 때만 사용하는 구분자이기 때문입니다. 작은 따움표의 또 다른 기능은 셀의 숫자 서식을 문자로 바꿉니다. 그래서 숫자와 관련된 수식을 적용해도 텍스트로 인식해서 정확한 결과값을 얻을 수 없습니다. 만약 숫자 계산과 관련된 데이터 앞에 작은 따움표가 있다면 모두 제거해야 합니다. 오늘은 VBA 매크로를 이용해서 삭제해 보겠습니다.

 

그림처럼 숫자 데이터 앞에 작은 따옴표가 있으면 텍스트로 인식하기 때문에 수식 계산이 안됩니다. 매크로를 이용해서 삭제해 보겠습니다.

엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

 

매크로 함수를 만들기 위해 개발 도구 탭 > 매크로 리본 메뉴를 클릭합니다

엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

 

매크로 팝업창에서 만들기 버튼을 눌러 함수를 만듭니다

엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

 

함수에 다음과 같이 소스를 입력합니다. 소스 설명은 아래에서 하겠습니다

엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법

 

먼저 선택한 영역에서 apostrophe 를 판단하기 위해서는 영역의 속성 값 중에서 Range.PrefixCharacter 는 셀의 첫 글자를 리턴합니다. 그래서 apostrophe 인지 아닌지 비교할 수 있습니다.

 

If rng.PrefixCharacter = "'" Then

 

다음은 apostrophe 셀일 경우 값을 임시 변수에 담았다가 다시 셀에 붙여 넣습니다. 그러면 apostrophe 사라진 값만 들어 갑니다. 임시 변수에 담을 때 apostrophe 가 사라지기 때문입니다.

 

temp = rng.Value

rng.Value = temp

 

전체 소스는 다음과 같습니다. 영역을 선택하고 매크로를 실행해 보세요. apostrophe 를 한번에 삭제할 수 있습니다.

 

Sub deleteApostrophe()

 

    Dim rng As Range

    Dim temp As String

       

    '// 선택한 영역에서 Apostrophe 삭제

    For Each rng In Selection

        If rng.PrefixCharacter = "'" Then

            temp = rng.Value

            rng.Value = temp

        End If

    Next rng

 

End Sub



Posted by 녹두장군

댓글을 달아 주세요