엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법

 

환경: Microsoft Excel 2013

 

연산자의 종류에는 산술 연산자, 연결 연산자, 비교 연산자, 논리 연산자가 있습니다. 그 중에서 몫과 나머지를 구할 수 있는 연산자는 산술 연산자에 포함되어 있습니다. 나머지를 구하는 연산자는 “Mod” 이며, 몫은 “\” 연산자를 사용합니다. 물론 몫은 ”\” 가 아닌 나누기 “/” 연산자를 사용해서 구할 수도 있지만 소수점에서 반올림이 되기 때문에 값이 틀릴 수 있습니다. 이 때 보정하는 방법도 알려 드리겠습니다.

 

Mod 연산자를 사용해서 나머지 구하기

 

나머지를 구하기 위한 연산자는 Mod 입니다. Mod 의 왼쪽에 나눌 대상이 오고, 오른쪽에는 나누는 수를 둡니다. 아래 샘플의 결과값은 62 에 대한 3의 몫을 구하는 것이기 때문에 2 가 되겠죠.

 

Sub ModOperator()

   

    Dim score1 As Integer, score2 As Integer

    Dim result As Integer

   

    score1 = 62

    score2 = 3

   

    result = score1 Mod score2

   

    MsgBox "나머지 : " & result

 

End Sub

엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법

 

만약 분모에 값이 없거나 0 이면 DivideByZeroExcepion 예외를 반환하게 됩니다. 에러가 발생한다는 것이죠. Mod 연산자에서 나누는 값은 0 이 되면 안됩니다

엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법

 

몫을 구하는 방법

 

몫을 구하는 연산자는 두 가지가 있습니다. “/” Operator “\” Operator 가 그것입니다. 좀더 정확한 몫을 구하고자 한다면 “\” 을 사용해야 합니다. 왜냐하면 부동소수점이 나올 때 반올림이 돼서 두 값이 틀려 지기 때문입니다.

 

Sub ModOperator()

   

    Dim score1 As Integer, score2 As Integer

    Dim result1 As Integer, result2 As Integer

   

    score1 = 62

    score2 = 4

   

    result1 = score1 / score2

    result2 = score1 \ score2

   

    Debug.Print "/ 연산자 몫 : " & result1

    Debug.Print "\ 연산자 몫 : " & result2

 

End Sub

 

소스를 실행한 결과 “/” 연산자를 사용했을 때 “\” 보다 1 이 더 큰 이유는 반올림을 했기 때문입니다. 그럼 두 값이 동일하도록 만드는 방법은 무엇일까요

엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법

 

그것은 소수점 데이터를 버리는 Fix 함수를 사용하는 것입니다. Fix 2.98 의 데이터를 2 로 만듭니다. “/” 연산자를 사용한 결과물에 Fix 함수를 사용하면 “\” 와 결과가 같아 지겠죠.

 

Sub ModOperator()

   

    Dim score1 As Integer, score2 As Integer

    Dim result1 As Integer, result2 As Integer

   

    score1 = 62

    score2 = 4

   

    result1 = Fix(score1 / score2)

    result2 = score1 \ score2

   

    Debug.Print "/ 연산자 몫 : " & result1

    Debug.Print "\ 연산자 몫 : " & result2

 

End Sub

엑셀 VBA 나머지를 구하기 위한 Mod 연산자와 몫 구하는 연산자 사용법

저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군