연산자의 종류에는 산술 연산자, 연결 연산자, 비교 연산자, 논리 연산자가 있습니다. 그 중에서 몫과 나머지를 구할 수 있는 연산자는 산술 연산자에 포함되어 있습니다. 나머지를 구하는 연산자는 “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 |
▼ 만약 분모에 값이 없거나 0 이면 DivideByZeroExcepion 예외를 반환하게 됩니다. 에러가 발생한다는 것이죠. Mod 연산자에서 나누는 값은 0 이 되면 안됩니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 이항 논리 And, Or, Xor 단항 논리 Not 연산자 사용하기 ▶ 엑셀 VBA 연산자 사용해서 String 문자열을 합치기 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA IF 지시 구문 사용하는 방법 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 |
◎ 몫을 구하는 방법 |
▼ 몫을 구하는 연산자는 두 가지가 있습니다. “/” 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 이 더 큰 이유는 반올림을 했기 때문입니다. 그럼 두 값이 동일하도록 만드는 방법은 무엇일까요?
▼ 그것은 소수점 데이터를 버리는 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 이항 논리 And, Or, Xor 단항 논리 Not 연산자 사용하기 ▶ 엑셀 VBA 연산자 사용해서 String 문자열을 합치기 ▶ 엑셀 VBA 날짜 데이터를 비교하거나 연산하기 ▶ 엑셀 VBA IF 지시 구문 사용하는 방법 ▶ 엑셀 VBA 반복문 For Next 문 사용하기 |
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 정규식으로 한글, 일어, 한자 추출하기 (3) | 2023.06.22 |
---|---|
엑셀 VBA Cells 속성의 다양한 사용법 (0) | 2023.06.22 |
엑셀 VBA 마지막 행과 열의 수 찾기 (3) | 2023.06.22 |
엑셀 VBA 셀에서 연속된 데이터 한 번에 선택 CurrentRegion, UsedRange 사용 (0) | 2023.06.21 |
엑셀 VBA 함수 실행 중에 오류 처리하는 구문 On Error GoTo 사용하기 (0) | 2023.06.11 |
엑셀 VBA 반환한 배열 데이터 셀에 표현하기 (0) | 2023.06.10 |
엑셀 VBA On Error GoTo 반복문에서 에러 거르기 (0) | 2023.06.09 |
엑셀 VBA 배열의 크기를 알아 내기 (0) | 2023.05.29 |