2004-02-05, 염기웅(carl@jnccompany.com.korea / kiwoong.jnccompany.com)


<참고> 상기한 저자 이메일의 .korea는 스팸 방지용입니다.


버전: 공통

엑셀에서는 반올림 함수, 올림 함수, 버림 함수가 각각 존재합니다. 따라서 사용자는 원하는 값으로 변환할 수 있습니다. 반면에 액세스의 경우 반올림 함수만 존재합니다. 그래서 올림이나 버림의 경우 적용하기가 상당히 까다롭지요. 오늘은 반올림, 올림, 버림의 기능을 적용하는 방법을 알아보도록 하겠습니다.

모듈을 하나 만든 다음 다음의 VBA 코드를 삽입하기 바랍니다.

Function RoundEx(dblNumber As Double, lngNumberDigitAfterDecimal As Long, strMethod As String) As Double

'작성일: 2002-1-22
'작성자: 염기웅
'기능: 원하는 자리수에서 숫자를 올림, 버림, 반올림해서 반환한다.
'
'dblNumber : 반올림할 수
'lngNumberDigitAfterDecimal : 반올림할 자리수
' *** 기본적으로 소수점 이하 자리수를 말한다
' *** 음수일 경우 소수점에서 왼쪽방향의 자리수를 말한다. 즉, 정수부분을 말한다.
'strMethod : 올림, 버림, 반올림인지를 결정한다.
' *** RoundNormal : 반올림
' *** RoundUp : 올림
' *** RoundDown : 버림

Dim dblRoundValue As Double

Select Case strMethod
Case "RoundNormal"
dblRoundValue = 0.5000001
Case "RoundDown"
dblRoundValue = 0
Case "RoundUp"
dblRoundValue = 0.9
End Select

RoundEx = Int((dblNumber * 10 ^ lngNumberDigitAfterDecimal) + dblRoundValue) / 10 ^ lngNumberDigitAfterDecimal

End Function


이 함수를 이용하면 올림, 버림, 반올림을 원하는 데로 적용할 수 있습니다.

사용법:
RoundEx(적용할_숫자값, 자리수, 방법)
방법: RoundNormal – 반올림
RoundUp – 올림
RoundDown – 버림


1. 소수점 이하에서 반올림, 올림, 버림
1) 반올림
예를 들어, 3.141592 라는 수를 소수점 둘째 자리에서 반올림 한다면 3.14가 됩니다. 이 때는 다음과 같이 적용하면 됩니다.
RoundEx(3.141592, 2, “RoundNormal”)

2) 올림
3.141592 를 소수점 둘째 자리에서 올림하면 3.15가 됩니다.
RoundEx(3.141592,2,”RoundUp”)

3) 버림
3.141592 를 소수점 둘째 자리에서 버림하면 3.14가 됩니다.
RoundEx(3.141592,2,"RoundDown")

2. 정수부분에서 반올림, 올림, 버림
이 함수에서 ‘자리수’를 입력할 때 1, 2, 3 과 같은 수는 소수점 이하를 지칭합니다. 따라서 정수부분에서의 반올림, 올림, 버림은 다른 값을 적용해야 합니다. 0의 자리는 -1, 10의 자리는 -2, 100의 자리는 -3 으로 지정하면 됩니다.

1) 반올림
3840 을 정수부분 세번째 자리(100의 자리)에서 반올림하면 4000이 됩니다.
RoundEx(3840,-3,"RoundNormal")

2) 올림
3840을 정수부분 세번째 자리(100의 자리)에서 올림하면 4000이 됩니다.
RoundEx(3.141592,-3,"RoundUp")

3) 버림
3840을 정수부분 세번째 자리(100의 자리)에서 버림하면 3000이 됩니다.
RoundEx(3.141592,-3,"RoundDown")

이제 기본적인 RoundEx 함수의 사용방법은 이해하셨으리라고 생각됩니다.

쿼리에서는 어떻게 적용해야 할까요? 샘플 파일을 첨부하였으니 참고하기 바랍니다.

006_Sample.zip

샘플파일 다운받기



실제로 액세스에서 사용할 때는 함수에 특정 값을 넣기 보다는 다음 그림과 같이 필드명을 부여하게 됩니다.



다음 그림은 여러 숫자에 대해 소수점 이하 두번째 자리에서 반올림, 올림, 버림을 수행한 결과입니다.



다음 그림은 여러 숫자에 대해 정수부분 세번째 자리(100의 자리) 에서 반올림, 올림, 버림을 수행한 결과입니다.



어떻습니까? 앞으로 반올림, 올림, 버림에 대해서 걱정할 필요는 없겠죠? 잘 활용하시기 바랍니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Kiwoong~

트랙백 주소 :: http://blog.teamdata21.com/trackback/50 관련글 쓰기

댓글을 달아 주세요