Есть ли vba-эквивалент функции excel mod
?VBA эквивалент функции модема Excel
ответ
Вы хотите mod operator.
The expression a Mod b is equivalent to the following formula:
a - (b * (a \ b))
Edited добавить:
Есть некоторые особые случаи, вы, возможно, придется рассмотреть, потому что Excel использует точку математики с плавающей (и возвращает float
), где функция VBA возвращает целое число. Из-за этого, используя mod
с числами с плавающей точкой может потребоваться дополнительное внимание:
результаты Excel могут не точно соответствовать тому, что вы бы предсказать; это покрывается кратко here (see topmost answer) и на большой длине here.
Как отмечает Андре в комментариях, отрицательные числа могут округлять в противоположном направлении от ожидаемого. Предлагается функция
Fix()
here (MSDN).
Mod
operator, примерно эквивалентно MOD
function:
number Mod divisor
примерно эквивалентно MOD(number, divisor)
.
Мой путь к репликации в 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,123000000000005 вместо 0,123 В VBA 90.123 Mod 90 возвращает 0
Они, конечно, не эквивалентны!
Эквивалент являются: В Excel: = Round (Mod (90.123,90), 3) возвращение 0,123 и В VBA: ((90,123 * 1000) Mod 90000)/1000 возвращения также 0,123
В верхней Ответ на самом деле неправильный.
Предложенное уравнение: a - (b * (a \ b))
будет решать: a - a
который, конечно, 0 во всех случаях.
Правильное уравнение:
a - (b * INT(a \ b))
Или, если номер (а) может быть отрицательным, используйте:
a - (b * FIX(a \ b))
Но если вы просто хотите рассказать разница между нечетной итерацией и равномерной итерацией, это работает очень хорошо:
If i Mod 2 > 0 then 'this is an odd
'Do Something
Else 'it is even
'Do Something Else
End If
- 1. Excel VBA эквивалент функции ADDRESS
- 2. VBA эквивалент Excel «Поиск()»
- 3. Эквивалент VBA TRIM функции Excel с помощью функции рабочего листа
- 4. Нужен настоящий эквивалент VBA для функции Excel Значение
- 5. Excel VBA Функции функции сортировки
- 6. Синтаксис функции excel VBA
- 7. Функции о Excel VBA
- 8. Javascript эквивалент текстовой функции Excel
- 9. Cognos эквивалент функции sumif() excel
- 10. Google Script эквивалент Excel VBA Refedit
- 11. IFDEF эквивалент в VBA
- 12. Функции VBA в MS Excel
- 13. Excel/VBA Основные функции Проблема
- 14. Обновить результаты функции Excel VBA
- 15. Ошибка функции агрегации Excel VBA
- 16. Поиск функции в Excel VBA
- 17. VBA/MS SQL эквивалент функции сохранения SAS
- 18. VB.NET эквивалент дополнительного диапазон аргумент в функции VBA
- 19. SQL Server эквивалент функции TINV Excel
- 20. Что такое эквивалент MATLAB функции NORMSDIST Excel?
- 21. SQL Server - любой эквивалент функции CHOOSE Excel?
- 22. есть эквивалент функции COUNTIFS Excel в Stata?
- 23. Явный эквивалент функции SECOND() в Excel
- 24. C# эквивалент функции TINV от Excel
- 25. Что такое эквивалент MATLAB функции WORKDAY Excel?
- 26. Эквивалент функции NETWORKDAYS Excel с Jet ADO
- 27. Excel эквивалент Google Docs функция "запроса()" пользовательская функция VBA
- 28. Максимальный эквивалент в excel?
- 29. Excel VBA to C#
- 30. Переопределение массива в функции Excel VBA
Вам лучше изменить `(a \ b)` for `Fix (a/b)`. В противном случае могут возникнуть проблемы с десятичными аргументами. Попробуйте свою формулу с `a = 1.75` и` b = 1`, и вы увидите мою мысль. – 2013-07-25 16:01:51