用于从列表中的第一个值中减去后续数字的 VBA 代码

用于从列表中的第一个值中减去后续数字的 VBA 代码

我有一个数字列表。我想使用 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

编辑(根据 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

相关内容