Excel의 mod 함수와 동등한 VBA
엑셀과 동등한 vba가 있나요?mod기능하고 있습니까?
vba의 기능은 MOD입니다.
5 MOD 2
여기 유용한 링크가 있습니다.
mod 연산자를 원합니다.
The expression a Mod b is equivalent to the following formula:
a - (b * (a \ b))
추가하도록 편집됨:
Excel은 부동소수점 연산을 사용하고 있기 때문에 고려해야 할 특별한 경우가 있습니다.floatVBA 함수가 정수를 반환합니다.이 때문에,mod부동소수점 숫자가 있는 경우는, 특히 주의가 필요한 경우가 있습니다.
Excel의 결과는 예상과 정확하게 일치하지 않을 수 있습니다.이것에 대해서는, 여기서 간단하게 설명합니다(상단의 회답 참조).
@André가 댓글에서 지적했듯이 마이너스 숫자는 예상과 반대 방향으로 반올림할 수 있습니다.그
Fix()여기서 설명하겠습니다(MSDN).
Excel을 복제하는 방법MOD(a,b)VBA에서 사용하는 것은XLMod(a,b)다음 기능을 포함하는 VBA:
Function XLMod(a, b)
' This replicates the Excel MOD function
XLMod = a - b * Int(a / b)
End Function
VBA 모듈에서
Excel MOD(a, b) 기능 및 VBA a Mod b 연산자는 매우 주의해야 합니다.Excel은 부동소수점 결과를 반환하고 VBA는 정수를 반환합니다.
Excel = Mod(90.123,90)에서 0.123 대신 0.1230000000005를 반환하고 VBA 90.123 Mod 90에서 0을 반환합니다.
그들은 확실히 동등하지 않다!
등가:Excel: =Round(Mod(90.123,90),3)는 0.123을 반환하고, In VBA: (90.123*1000) Mod 90000)/1000도 0.123을 반환합니다.
number Mod divisor대략 와 동등하다MOD(number, divisor).
Function Remainder(Dividend As Variant, Divisor As Variant) As Variant
Remainder = Dividend - Divisor * Int(Dividend / Divisor)
End Function
이 함수는 항상 작동하며 Excel 함수의 정확한 복사본입니다.
단, 홀수 반복과 짝수 반복의 차이만 구별하고 싶다면 다음과 같이 하면 됩니다.
If i Mod 2 > 0 then 'this is an odd
'Do Something
Else 'it is even
'Do Something Else
End If
Excel의 mod 함수에서도 잘못된 결과가 나온다면 이것이 가장 신뢰성이 높다는 것을 알게 되었습니다.
원래 XLMod = (a - (b * Int(a / b))조차 잘못된 결과를 주고 있었기 때문에..
Function XLMod(a, b As Long)
' This replicates the Excel MOD function - the VBA mod function returns an integer
Dim templong As Long
templong = (b * Int(a / b))
XLMod = (a - templong)
End Function
맨 위의 답은 사실 틀렸다.
권장 방정식:a - (b * (a \ b))
해결 대상:a - a
물론 모든 경우에 0입니다.
올바른 방정식은 다음과 같습니다.
a - (b * INT(a \ b))
또는 숫자(a)가 음수일 수 있는 경우 다음을 사용합니다.
a - (b * FIX(a \ b))
언급URL : https://stackoverflow.com/questions/4378047/vba-equivalent-to-excels-mod-function
'programing' 카테고리의 다른 글
| 문자열을 C#의 열거형으로 변환합니다. (0) | 2023.04.19 |
|---|---|
| 부호 없는 정수 오버플로를 검출하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
| UTF8 데이터를 Excel로 내보내는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.14 |
| WPF: 대화 상자/프롬프트 생성 (0) | 2023.04.14 |
| 파워셸에서 머리, 꼬리, 더, 덜, 더, 덜, 더, 더, 더, 더, 더, 더, 더, 더, 더, 더, 더, 어떻게 하는 (0) | 2023.04.14 |