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
Другие вопросы по тегам