您的问题是如何使用VBA实现Excel表中的逻辑B1=SUM(B2:B14),B2=IF(SUM(B3:B14)<B2,SUM(B3:B14),B2),B3=IF(B$3-B$2>0,B$3-B$2,0),B4=IF(SUM(B$3:B3)-B$2>0,B4,IF(SUM(B$3:B4)-B$2<=0,0,SUM(B$3:B4)-B$2))
时间: 2024-02-24 09:53:55 浏览: 20
以下是使用 VBA 实现 Excel 表中的逻辑 B1=SUM(B2:B14),B2=IF(SUM(B3:B14)<B2,SUM(B3:B14),B2),B3=IF(B$3-B$2>0,B$3-B$2,0),B4=IF(SUM(B$3:B3)-B$2>0,B4,IF(SUM(B$3:B4)-B$2<=0,0,SUM(B$3:B4)-B$2)) 的代码:
```
Sub calculate()
Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row
' 计算 B1
Range("B1").Value = Application.WorksheetFunction.Sum(Range("B2:B14"))
' 计算 B2
If Application.WorksheetFunction.Sum(Range("B3:B14")) < Range("B2").Value Then
Range("B2").Value = Application.WorksheetFunction.Sum(Range("B3:B14"))
End If
' 计算 B3~B14
For i = 3 To 14
If Range("B" & i).Value - Range("B" & i - 1).Value > 0 Then
Range("B" & i).Value = Range("B" & i).Value - Range("B" & i - 1).Value
Else
Range("B" & i).Value = 0
End If
If Application.WorksheetFunction.Sum(Range("B$3:B" & i)) - Range("B2").Value > 0 Then
Range("B" & i).Value = Application.WorksheetFunction.Sum(Range("B$3:B" & i)) - Range("B2").Value
Else
Range("B" & i).Value = 0
End If
Next i
End Sub
```
请将此代码复制到一个新的 VBA 模块中,并在需要的时候运行它。注意,该代码假定您的数据从 B2 到 B14。如果您的数据位于其他位置,请相应地更改代码中的单元格引用。