VBa实现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 15:55:22 浏览: 86
以下是 VBA 代码实现 B3 和 B4 的公式:
```vb
' 计算 B3
If Range("B3") - Range("B2") > 0 Then
Range("B3").Value = Range("B3") - Range("B2")
Else
Range("B3").Value = 0
End If
' 计算 B4
If Application.Sum(Range("B3:B" & ActiveCell.Row)) - Range("B2") > 0 Then
Range("B" & ActiveCell.Row).Value = Application.Sum(Range("B3:B" & ActiveCell.Row)) - Range("B2")
ElseIf Application.Sum(Range("B3:B" & ActiveCell.Row)) - Range("B2") <= 0 Then
Range("B" & ActiveCell.Row).Value = 0
End If
```
这里假设 B3 和 B4 的公式分别放在单元格 B3 和 B4 中,且当前选中的单元格为 B4。如果需要在其他单元格中使用该公式,只需要将 `ActiveCell.Row` 修改为对应的行数即可。
相关问题
Vba表示第三行和第四行数据,例如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))
这两行数据可以使用类似以下的VBA代码来表示:
```
Range("B3").Value = "=IF(B$3-B$2>0,B$3-B$2,0)"
Range("B4").Value = "=IF(SUM(B$3:B3)-B$2>0,B4,IF(SUM(B$3:B4)-B$2<=0,0,SUM(B$3:B4)-B$2))"
```
这段代码将IF函数和SUM函数嵌套在一起,实现了对第三行和第四行数据的计算。其中,$符号表示绝对引用,防止在拖动公式时出现意外的变化。
您的问题是如何使用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))
以下是使用 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。如果您的数据位于其他位置,请相应地更改代码中的单元格引用。