문자나 숫자 앞에 작은 따움표가 있으면 어떻게 될까요? 수식 입력줄에는 나타나지만 셀에 표시되지 않습니다. 작은 따움표는!@#$%^&*()~"',.? 등의 특수문자를 표시할 때만 사용하는 구분자이기 때문입니다. 작은 따움표의 또 다른 기능은 셀의 숫자 서식을 문자로 바꿉니다. 그래서 숫자와 관련된 수식을 적용해도 텍스트로 인식해서 정확한 결과값을 얻을 수 없습니다. 만약 숫자 계산과 관련된 데이터 앞에 작은 따움표가 있다면 모두 제거해야 합니다. 오늘은 VBA 매크로를 이용해서 삭제해 보겠습니다.
▼ 그림처럼 숫자 데이터 앞에 작은 따옴표가 있으면 텍스트로 인식하기 때문에 수식 계산이 안됩니다. 매크로를 이용해서 삭제해 보겠습니다.
▼ 매크로 함수를 만들기 위해 개발 도구 탭 > 매크로 리본 메뉴를 클릭합니다.
▼ 매크로 팝업창에서 만들기 버튼을 눌러 함수를 만듭니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
▼ 함수에 다음과 같이 소스를 입력합니다. 소스 설명은 아래에서 하겠습니다.
▼ 먼저 선택한 영역에서 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
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 매크로 디버깅, 디버그 코드 분석하기 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA Function 와 Sub 프로시저의 차이점과 사용법 알아 보기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 메모의 모양을 직사각형, 풍선, 다이어몬드 형태 만들기 (0) | 2023.01.10 |
---|---|
엑셀 VBA 기존 AVERAGE 평균 함수 수정해서 나만의 함수 만드는 방법 (0) | 2023.01.10 |
엑셀 VBA 영역을 입력받는 RefEdit 컨트롤 사용하는 방법 (0) | 2023.01.09 |
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법 (0) | 2023.01.08 |
엑셀 VBA 개별 파일 시트 복사해서 하나의 파일에 통합하기 (0) | 2023.01.07 |
엑셀 VBA 아티클 전체 목록 (12) | 2022.12.23 |
엑셀 VBA 문서에 포함된 하이퍼링크 한번에 삭제하기 (1) | 2022.11.30 |
엑셀 VBA 폰트(Font) 색상과 스타일, 사이즈, 글꼴 변경하는 방법 (0) | 2022.10.27 |