티스토리 뷰
엑셀의 워크시트에는 다양한 데이터형을 지원하기 위한 데이터 타입이 있습니다. 이러한 데이터 타입 사이에서 데이터를 변환하는 방법에 대해서 오늘은 알아보도록 하겠습니다. VBA의 대표적인 데이터 변환 함수는 C + 데이터형 이름을 가진 함수들입니다. VBA에서 지원하는 C함수들의 목록은 아래와 같습니다.
함수 이름 |
기능 설명 |
CBool |
전달된 식 혹은 값을 불리언 형으로 변경합니다. |
CByte |
전달된 식 혹은 값을 바이트 형으로 변경합니다. |
CInt |
전달된 식 혹은 값을 정수 형으로 변경합니다. |
CLng |
전달된 식 혹은 값을 Long 형으로 변경합니다. |
CSng |
전달된 식 혹은 값을 Single 형으로 변경합니다. |
CDbl |
전달된 식 혹은 값을 Double 형으로 변경합니다. |
CDec |
전달된 식 혹은 값을 Decimal 형으로 변경합니다. |
CStr |
전달된 식 혹은 값을 문자열 형으로 변경합니다. |
CVar |
전달된 식 혹은 값을 Variant 형으로 변경합니다. |
CCur | 전달된 식 혹은 값을 Currency 형으로 변경합니다. |
CDate | 전달된 식 혹은 값을 Date 형으로 변경합니다. |
VBA에서 지원하는 데이터 타입에 대해서는 이전의 글에 상세히 적어놓았으니, 잘 모르시거나 헷갈리시는 분들은 아래의 링크를 참조하시기 바랍니다.
데이터형까지 확인해 보셨나요, 그럼 CInt를 위주로 사용법에 대해서 설명을 드리겠습니다. CInt는 위에서 설명드렸다 싶이 식 혹은 값을 정수형으로 변형하는 함수입니다 . Cint는 은행원 반올림으로 처리가 됩니다. 소수의 값이 0.5이면 가장 가까운 짝수 정수로 반올림이 됩니다.
Cint를 이용하여 직접 실행창에서 실행을 하면 아래와 같은 결과를 얻을 수 있습니다.
정수형에 대한 데이터 변환은 Cint 말고 Fix와 Int 형으로 데이터를 처리할 수 있습니다. Int와 Fix는 반올림이 아닌 내림으로 소수점 자리를 바로 변경을 하는 차이가 있습니다. 또한 Int 함수의 경우 Double 형의 데이터까지 처리할 수 있기 때문에 Cint보다 더 높은 숫자를 처리할 수 있습니다.
Int 함수의 처리 결과는 아래와 같습니다.
데이터 변환에 대한 기본적인 내부 처리 방안을 이해하고 있으면 좀 더 수월하고 편리하게 데이터를 변환할 수 있습니다. MSDN에서 제공하는 변환에 대한 세부 처리 방안은 아래와 같습니다.
- 강제 변환 : 일반적으로 데이터 형식 변환 함수를 사용하여 연산의 결과를 기본 데이터 형식이 아닌 특정 데이터 형식으로 강제 변환할 수 있습니다. 예를 들어, 단정밀도, 배정밀도 또는 정수 연산이 발생할 경우 CDec 함수를 사용하여 10진수 연산을 계산합니다.
- 변환 실패 : 함수에 전달된 expression이 변환될 데이터 형식의 범위 밖에 있으면 OverflowException이 발생합니다.
- CInt 와 CLng와 달리 Int 및 Fix 함수는 소수 부분을 반올림하지 않고 버립니다. 또한 Fix와 Int는 항상 사용자가 전달한 값과 같은 데이터 형식 값을 반환합니다.
- 날짜/시간 변환 : IsDate 함수를 사용하여 값을 날짜 및 시간으로 변환할 수 있는지 확인합니다. CDate 는 날짜 리터럴 및 시간 리터럴은 인식하지만 숫자 값은 인식하지 못합니다.
- 기본 날짜/시간 값. Date 데이터 형식(Visual Basic) 에는 항상 날짜 정보와 시간 정보가 모두 포함됩니다. 형식 변환을 목적으로, Visual Basic은 1/1/0001(1년 1월 1일)을 날짜의 기본값으로 간주하고 00:00:00(자정)을 시간의 기본값으로 간주합니다.
- Date 값을 문자열로 변환할 경우 CStr의 결과 문자열에 기본값이 포함되지 않습니다. 예를 들어, #January 1, 0001 9:30:00#을 문자열로 변환한 결과는 "9:30:00 AM"이며 날짜 정보는 표시되지 않습니다. 그러나 날짜 정보는 원래 Date 값에 그대로 있으며 DatePart 등의 함수를 사용하여 복구할 수 있습니다.
- 문자열을 포함하는 형식 변환 함수는 응용 프로그램의 현재 문화권 설정에 기초하여 변환을 수행합니다. 예를 들어, CDate는 시스템의 로캘 설정에 따라 날짜 형식을 인식합니다. 사용자 로캘에 맞는 순서로 일, 월, 년을 지정해야 합니다. 그렇지 않으면 날짜가 올바르게 해석되지 않을 수 있습니다. "Wednesday"와 같은 요일 문자열이 들어 있는 경우 long 날짜 형식은 인식되지 않습니다.
- 로캘에 지정된 것과 다른 형식의 값 문자열 표현으로 변환하거나 이러한 표현에서 변환해야 할 경우에는 Visual Basic 형식 변환 함수를 사용할 수 없습니다. 이렇게 하려면 해당 값 형식의 ToString(IFormatProvider) 및 Parse(String, IFormatProvider) 메서드를 사용합니다. 예를 들어, 문자열을 Double로 변환할 경우 Double.Parse를 사용하고 Double 형식의 값을 문자열로 변환할 경우 Double.ToString을 사용합니다.
이 글에서는 데이터 변환에 대해서 알아보았습니다. VBA에서는 다양한 함수를 지원하여 데이터를 변환할 수 있습니다.
이 글이 도움이 되셨나요?
그렇다면 아래의 그림을 클릭해주세요.
'프로그래밍 팁s > Excel(Macro, VBA)' 카테고리의 다른 글
[엑셀 매크로 VBA] Call By Reference와 Call By Value (0) | 2015.01.19 |
---|---|
[엑셀 매크로 VBA] MsgBox 메시지 박스 창 띄우기 (4) | 2014.12.24 |
[엑셀 매크로 VBA] Option Explicit(명시적 선언)에 대해서 (0) | 2014.12.08 |
[엑셀 매크로 VBA] IIF 함수에 대해서 (0) | 2014.12.05 |
[엑셀 매크로 VBA] 조건문 - IF문과 비교 / 논리연산자에 대해서 (0) | 2014.12.04 |