EXCEL VBA

엑셀 VBA 형식을 지정하는 Format 함수(숫자 형식 지정)

카루루1007 2024. 8. 6. 16:27
728x90
반응형

[ 들어가며 ]

 

Format 함수
VBA에서 데이터를 특정 형식으로 변환해 주는 함수입니다.

대표적인 것이 날짜의 형식이 있을 수 있고
숫자나 문자열 등의 형식 변환이 가능합니다.

특정 날짜에서
연도만 표시할 수도 있고
소수점 두 자리 이상의 숫자를
소수점 두자리까지만 표시하게 할 수도 있습니다.

728x90

 

[ Format 함수의 기본 구조 ]

 

Format 함수의 기본 구조는 다음과 같습니다.

Format(expression, [format])

expression은 형식을 지정할 데이터입니다.
날짜, 숫자 또는 문자열 등이 해당이 됩니다.

format은 데이터를 변환할 형식의 문자열입니다.

오늘은 먼저 숫자 형식을 지정하는 방법에 대해 먼저 작성해 보겠습니다.

※ 날짜와 시간의 형식을 지정하는 방법

 

[ 기본 정수 형식 ]

 

Sub Example_Format()
    MsgBox Format(1234.567, "0")
    MsgBox Format(1234.467, "#")
End Sub

위 코드에서 보시는 바와 같이
이 경우에는 0 또는 # 을 사용합니다.

실행결과는

MsgBox Format(1234.567, "0")

위 코드의 경우 1235

MsgBox Format(1234.467, "#")

위 코드의 경우 1234
가 결과로 나타납니다.

자동으로 반올림이 됩니다.

 

[ 소수점 자리수 지정 ]

 

소수점 이하 자리수를 지정하여 표시하는 방법입니다.

Sub Example_Format()
    MsgBox Format(1234.5, "0.00")
    MsgBox Format(1234.567, "#.##")
End Sub

위 코드의 실행결과는 각각
1234.501234.57 입니다.

소수점의 자릿수가 지정된 자릿수보다 적은 경우 0으로 채우고
지정된 자리수보다 많은 경우 반올림을 하여 값을 보여줍니다.

 

[ 천 단위 구분자 사용 ]

 

보통 숫자를 표현할 때 읽기 쉽게 하기 위해서
1,000 단위마다 쉼표(,)를 사용합니다.

Sub Example_Format()
    MsgBox Format(1234567.89, "#,###")
    MsgBox Format(1234567.89, "#,##0.00")
End Sub

위 코드의 실행 결과는
각각 1,234,5681,234,567.89입니다.

보시다시피 소수점 자릿수 지정과 같이 사용이 가능합니다.

반응형

[ 백분율 형식 사용 ]

 

백분율 형식으로도 표시가 가능합니다.

Sub Example_Format()
    MsgBox Format(0.456, "0%")
    MsgBox Format(0.456, "0.00%")
End Sub

위 코드를 실행하면
각각 46%45.60% 로 결과가 나타납니다.

 

[ 통화 형식 사용 ]

 

맨 앞에 $ 표시나 같은 통화 표시도 가능합니다.

Sub Example_Format()
    MsgBox Format(1234, "$#,###")
    MsgBox Format(1234, "₩#,###")
End Sub

위 코드의 결과는
$1,2341,234 가 됩니다.

₩ 표시가 제대로 되지 않는 경우가 있는데,
이 경우 아래와 같이 유니코드 값을 사용하면
정상적으로 표시되게 할 수 있습니다.

Sub Example_Format()
    MsgBox Format(1234, "$#,###")

    wonSymbol = ChrW(&H20A9)
    MsgBox Format(1234, wonSymbol & "#,###")
End Sub

 

[ 지수 형식 사용 ]

 

지수 형식으로 사용하는 방법입니다.

Sub Example_Format()
    MsgBox Format(123456789, "0.00E+00")
End Sub

위 코드의 결과는 1.23E+08 입니다.

 

[ 조건부로 표시하기 ]

 

숫자가 양수, 음수 또는 0 인지에 따라 결과를 다르게 표시할 수도 있습니다.

Sub Example_Format()
    MsgBox Format(1234, "+0;-0;0")
    MsgBox Format(-1234, "+0;-0;0")
    MsgBox Format(0, "+0;-0;0")
End Sub

위 코드의 실행결과는 각각
+1234 / -1234 / 0
입니다.

천 단위 구분기호와 같이 사용할 수도 있습니다.

Sub Example_Format()
    MsgBox Format(1234, "+#,###;-#,###;0")
    MsgBox Format(-1234, "+#,###;-#,###;0")
    MsgBox Format(0, "+#,###;-#,###;0")
End Sub

아래와 같이 텍스트로 출력도 가능합니다.

Sub Example_Format()
    MsgBox Format(1234, "양수;음수;영")
    MsgBox Format(-1234, "양수;음수;영")
    MsgBox Format(0, "양수;음수;영")
End Sub

 

[ 텍스트도 같이 출력하기 ]

 

1,234원, 1,234달러와 같이
임의의 텍스트와 같이 출력할 수도 있습니다.

Sub Example_Format()
    MsgBox Format(1234, "#,###원")
    MsgBox Format(1234, "#,###달러")
End Sub

위 코드의 출력 결과는 1,234원, 1,234달러 입니다.

 

[ 지정된 자릿수만큼 0으로 채우기 ]

 

000123, 001234 이런 형식으로 지정된 자릿수만큼
0을 채우기도 가능합니다.

Sub Example_Format()
    MsgBox Format(42, "00000")
    MsgBox Format(142, "00000")
    MsgBox Format(1242, "00000")
    MsgBox Format(12242, "00000")
    MsgBox Format(111111142, "00000")
End Sub

위 코드의 출력 결과는
00042 / 00142 / 01242 / 12242 / 111111142
가 됩니다.

마지막과 같이 자릿수를 초과하면 해당 숫자가 그냥 표시됩니다.

 

여기를 방문하시면 더 많은 엑셀 관련 자료를 확인할 수 있습니다.

엑셀 공부하기
VBA 공부하기

728x90
반응형