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