У меня есть список номеров. Я хочу использовать первое число в списке в качестве начального значения и вычесть последующие числа из него, используя VBA.

Я сделал несколько неудачных попыток:

Function less(rng As Range)
    X = 0

    For Each cell In rng
    X = X - cell.Value

    Next

    less = X

End Function

Это приводит к вычитанию всех значений, включая первое. Например, для последовательности 5,7,3,6 мой код даст -21. Но я ожидаю -11.

Другой код, который я пробовал:

Function less(rng As Range)
    X = 0

    For Each cell In rng
    X = X + cell.Value
    X = X - cell.Value

    Next

    less = X

End Function

Он просто переопределяет каждое значение и приводит к 0.

Как я могу сделать первое значение в списке начальным значением, а затем сделать из него вычитания последующих значений?

Здесь меня не интересует знак каких-либо значений, только логическая последовательность, начиная с первого значения и вычитая из него последующие значения.

Примечание: я новичок в VBA, и это мой первый код.

1 ответ1

1

Редактировать (после комментариев от fixer1234)

Интерпретировать ваш вопрос как «пропустить первое значение из вычитания, но включить его в качестве начального значения» можно с помощью следующей функции:

Function less(rng As Range)
    Dim x, i As Integer
    Dim cell As Range

    For Each cell In rng
      If cell.Address = rng.Cells(1, 1).Address Then
        x = cell.Value
      Else
        x = x - cell.Value
      End If
    Next

    less = x
End Function

Это также будет соответствовать вашему комментарию, где вы сказали, что диапазон 5, 7, 3, 6 должен дать -11

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .