如图,我点第⑤行随便一个单元格,就把下面层级的数都求和放在C列,可以根据你的实际表改这个demo代码。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ROW1 = Target.Row '鼠标选定单元格得行数
xh = 1 ' 遍历层级行需要得变量
xsum = 0 ' 下层级数之和
i = Range("A" + CStr(ROW1)).Cells '获取对应层级单元格内容
y = Range("A" + CStr(ROW1 + xh)).Cells ' 下层级单元格内容
While i < y
xsum = xsum + Range("B" + CStr(ROW1 + xh)).Cells ' 当层级小于所选行层级,数累加
y = Range("A" + CStr(ROW1 + xh)).Cells ' 下层级单元格内容
xh = xh + 1
Wend
xsum = xsum - Range("B" + CStr(ROW1 + xh - 1)).Cells ' 循环会多加一个,减去
If xsum < 0 Then '如果值小于0
xsum = 0
End If
Range("C" + CStr(ROW1)) = xsum '将计算结果输出至C列
End Sub
注意VBA代码别放模块里,要不不起作用,放如下图里。