MOD 함수의 색다른 활용

nØthing spec¡al by Jimsjoo·2024년 7월 22일
0

VBA

목록 보기
11/13

MOD함수는 나눗셈의 나머지를 돌려준다. 인싸인 VLOOKUP과 달리 사람들이 기억해주지 않는 아싸함수이다. 얘를 첨 보았을 때, 이해가 가지 않았다. 뭐 이런 함수를 뭐하러 만들었지...별 쓸데없어 보이는데.. 기껏 사용하는 것이 짝수행이나 홀수행마다 색칠을 하거나 합계를 구하는 수식에서 사용되는 정도.
다음은 MOD함수의 기본적인 사용법이다. 8을 2로 나누면 나머지는 0이고 이 값을 돌려주는 것이 MOD함수이다. MOD함수에겐 '몫' 따위는 1조차 관심없다.

MOD함수를 이용하면 소수점을 가진 실수에서 소수점 이하의 값을 구할 수 있다. 가령 43773.8989982639에서 소수점이하를 얻으려면 어떻게 할 까? 눈으로 보면 쉬운 건데, 막상 방법은... 간단하다. 이 숫자를 1로 나누는 것이다. 1로 나누면 소수점 앞의 값이 몫이고 그 이하는 나머지이다.

= MOD(43773.8989982639, 1) = 0.8989982639

그런데 위의 예에서 사용한 숫자 43773.8989982639 는 그냥 나온 것은 아니다. 이 숫자를 입력하고 셀 서식을 날짜로 바꾸면 '2019년 11월 04일 오후 9:34'이다. 사실 엑셀은 날짜와 시간을 특별한 데이터 형식이 아닌 실수값으로 저장하고 있다.

정수부분은 1900년 1월 1일(기억이 정확하지 않는다)부터 세어온 일수이다. 그리고 소수점이하 숫자인 0.8989982639 는 오후 9시 34분을 가리키며, 이는 자정에서 시작하여 오후 9시 34분은 0.8989982639 , 약 89.89% 지난 것이다. 그래서 날짜와 시간이 같이 있는 데이터가 있다면 , MOD함수를 사용하여 시간부분을 뜯어낼 수 있다.

VBA로 이걸 구현하자면 다음과 같다;

Function DecimalPart(num As Double) As Double
    DecimalPart = num - Int(num)
End Function
profile
harmonized or torn between programming and finance

0개의 댓글