Código VBA para subtração de números subseqüentes em uma lista do primeiro valor

0

Eu tenho uma lista de números. Eu quero usar o primeiro número na lista como um valor inicial e subtrair os números subseqüentes, usando o VBA.

Eu fiz várias tentativas malsucedidas:

Function less(rng As Range)
    X = 0

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

    Next

    less = X

End Function

Resulta na subtração de todos os valores, incluindo o primeiro. Por exemplo, para a sequência 5,7,3,6 meu código vai dar -21. Mas eu espero -11.

Outro código que tentei é:

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

Ele apenas substitui cada valor e resulta como 0.

Como posso fazer o primeiro valor na lista o valor inicial e, em seguida, fazer as subtrações dos valores subsequentes dele?

Não estou preocupado aqui com o sinal de qualquer um dos valores, apenas a sequência lógica de começar com o primeiro valor e subtrair os valores subseqüentes dele.

Nota: sou novo no VBA e esta é a minha primeira codificação.

    
por Deepak Aggarwal 17.07.2018 / 20:07

1 resposta

1

Editar (após comentários do fixer1234)

Interpretar sua pergunta como "pular o primeiro valor da subtração, mas incluí-lo como um valor inicial" pode ser obtido com a seguinte função:

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

Isso também estará de acordo com o seu comentário, onde você disse que um intervalo de 5, 7, 3, 6 deve render -11

    
por 17.07.2018 / 22:48