얼마전 누군가 엑셀 원단위 절사를 어떻게 하느냐고 질문을 했었다. 그래서 몇가지 방법을 알려줬는데 이해를 잘 못하는 듯 싶었다. 내가 어렵게 설명했다기 보다는 상대방이 엑셀의 기초가 부족한 탓인듯 싶었다.
엑셀을 좀 공부한 사람에게는 원단위 절사를 딱 한줄로 설명하면 된다. "TRUNC 함수나 ROUNDDOWN 함수를 쓰면 됩니다.~"
그런데 엑셀에서 특정 기능만 쓰면 되는 경우라면 굳이 기초를 알 필요는 없을 듯 하니 좀 친절한 설명이 필요할 듯 하다.
원단위 절사는 반올림과 달리 원단위를 잘라서 버리는 것이다.
보통 대부분의 사람들이 원단위 절사를 할 때 ROUNDDOWN 함수를 사용하는데 개인적으로는 TRUNC 함수를 선호한다. 이 두 함수는 기능적으로는 똑같다고 볼 수 있지만 함수의 이름이 의미하는 바는 차이가 있어서다. ROUNDDOWN 는 내림이라는 의미고, TRUNC는 truncate의 약자로 잘라내다라는 뜻을 가지고 있다.
어짜피 원론적인 이야기지만 가끔은 결과도 중요하지만 어떤 의도로 수식을 만들었는지 파악해야하는 경우도 있다. (필자는 프로그래머이며 프로그래머적인 마인드에서 이런 이야기를 하니 그냥 흘려들어도 됩니다.)
엑셀 원단위 절사
대부분 아시겠으나 함수를 사용하는 방법은 수식입력줄에 바로 사용하는 방법과 fx기호를 눌러서 대화창에서 함수를 완성하는 방법이 있다.
함수 마법사는 시간이 걸리므로 결과가 표시될 셀을 선택한 후 수식입력줄에 다음과 같이 입력하도록 한다.
=ROUNDDOWN(B12, -1)
B12는 원래 값(절사를 하려는 값)이 있는 셀 주소다.
위 수식에서 -1은 자리수를 의미하는데
이 값이 만약 0이라면 소수점을 기준으로 소수점 아래 수들을 절사(소수점 첫 째 자리에서 절사)한다.
이 값이 1이라면 소수점 둘 째 자리에서 절사한다.
이 값이 -1일 때는 1자리에서 절사한다. 즉 원단위를 절사한다.
0일 때 소수점 아래를 절사한다는 기준을 기억한 후 값이 증가하면 소수점 아래 방향, 감소하면 소수점 위 방향으로 절사할 자리수가 이동한다고 기억하자.
다른 가격에도 원단위 절사를 적용하려면 마우스로 오른쫄 아래 끝을 잡고 끌어내려 자동채우기를 하면 된다.
TRUNC 함수를 사용
함수 이름만 다를 뿐 모두 동일하다.
만약 100단위를 절사하고 싶다면 ROUNDDOWN(B12, -3) 또는 TRUNC(B12, -3) 이라고 수식을 세우면 된다.
참고로 ROUNDDOWN 함수와 TRUNC 함수의 유일한 차이점은 TRUNC(B12, 0)을 TRUNC(B12)라고 쓸수 있다는 점이다. ROUNDDOWN의 경우 소수점 이하를 절사할 때 두번 자 인자인 0을 생략할 수 없고 ROUNDDOWN(B12, 0)이라고 써야한다.
여담으로 INT 함수
이 함수들과 비슷한 INT 함수가 있는데 이 함수는 원래의 수와 같거나 원래의 수보다 작은 정수로 변환해준다. 따라서 다음과 같이 사용하면 원단위 절사 효과를 낼 수 있다.
백단위 절사는 =INT(B12*0.001)*1000, 이라고 하면 되겠다.
하지만 INT 함수로 절사는 사용하지 말도록 하자. 혹시라도 음수를 다루게 되면 값이 달라질 수 있다. 이 함수는 소수점이 있는 음수 값을 원래의 값보다 작은 정수로 변환해 주기 때문에 (양수의 경우는 상관없음) 예를들어 -56.23을 -57로 만든다. 반면에 TRUNC나 ROUNDDOWN 함수는 소수점을 절사해서 -56을 만든다.