VBA Нечетные Номера / Мод
Я ищу некоторую помощь с моим сценарием VBA. Я застрял при попытке выяснить, как использовать функцию мода.
Это то, что я сделал до сих пор:
Function AddOddNumbersWithMod(nr)
Dim i, sum
sum = 0
For i = (IF 1 MOD 2 = 0) to nr step 1
sum = sum + i <-- (calculate all the odd numbers before nr)
Next i
End Function
Любой совет будет принята с благодарностью.
4 ответа
Для полноты, вот версия без петель:
Function SumOfOdds(n As Long) As Long
'returns sum 1 + 3 + 5 + ... of all odd numbers <= n
SumOfOdds = Int((n + 1) / 2) ^ 2
End Function
На основании этой картины:
L-подобные формы содержат последовательные нечетные числа и прекрасно сочетаются друг с другом, образуя идеальные квадраты. Этот красивый рисунок был хорошо известен древним грекам.
Вы хотите, чтобы результат i Mod 2 был 1, он показывает остаток, и если вы используете 2 в качестве делителя, вы хотите, чтобы остаток от 1 показывал нечетное число. Например, 7 mod 2 = 1, потому что 7, деленное на 2, равно 3 с остатком 1, это то, что нас интересует:
Function AddOddNumbersWithMod(nr)
Dim i As Double, MySum As Double
For i = 0 To nr
If i Mod 2 = 1 Then MySum = MySum + i ' <-- (calculate all the odd numbers before nr)
Next i
AddOddNumbersWithMod = MySum
End Function
Function AddOddNumbersWithMod(nr)
Dim i As Long, sum As Long
sum = 0
For i = 1 To nr - 1 Step 1
If (i Mod 2 <> 0) Then
sum = sum + i ' <-- (calculate all the odd numbers before nr)
End If
Next i
AddOddNumbersWithMod = sum
End Function
Чтобы добавить нечетные числа без Mod, вы можете использовать Шаг 2, чтобы пропустить четные числа, начиная с 1.
Function AddOddNumbersWithoutMod(nr)
Dim i As Long, sum As Long
sum = 0
For i = 1 To nr - 1 Step 2
sum = sum + i ' <-- (calculate all the odd numbers before nr)
Next i
AddOddNumbersWithoutMod = sum
End Function
Sub Oddeven()
Dim x As Double
x = InputBox("Please enter the Number: ")
If x Mod 2 = 0 Then
MsgBox ("The Number is the Even Number")
Else
MsgBox ("The Number is the Odd Number")
End If
End Sub