문자나 숫자 앞에 작은 따움표가 있으면 어떻게 될까요? 수식 입력줄에는 나타나지만 셀에 표시되지 않습니다. 작은 따움표는!@#$%^&*()~"',.? 등의 특수문자를 표시할 때만 사용하는 구분자이기 때문입니다. 작은 따움표의 또 다른 기능은 셀의 숫자 서식을 문자로 바꿉니다. 그래서 숫자와 관련된 수식을 적용해도 텍스트로 인식해서 정확한 결과값을 얻을 수 없습니다. 만약 숫자 계산과 관련된 데이터 앞에 작은 따움표가 있다면 모두 제거해야 합니다. 오늘은 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 영역을 입력받는 RefEdit 컨트롤 사용하는 방법 (0) | 2024.11.11 |
---|---|
엑셀 VBA 데이터 입력하는 텍스트 박스(Text Box) 사용하는 방법 (4) | 2024.11.02 |
엑셀 VBA 함수 Now 현재 날짜 및 시간 반환하기 (1) | 2024.11.02 |
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 (1) | 2024.10.31 |
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법 (1) | 2024.10.23 |
엑셀 VBA 개별 파일 시트 복사해서 하나의 파일에 통합하기 (2) | 2024.10.23 |
엑셀 VBA 여러 시트 데이터 합치기 (18) | 2024.10.15 |
엑셀 VBA 상태바 STATUSBAR 정보 출력하기 (0) | 2024.10.12 |