这个问题必须用excel VBA实现,假设数据放在1-10行
思路如下:
利用Worksheet_Change事件,检测到单元格变化,并关闭事件检测
定义集合,用来存放选中单元格行号
然后使用For Each将选中单元格数值相加
然后使用H = (55 - H) / (10 - n)得到剩余单元格数值H
将H填充到其他单元格
打开单元格事件检测
注意:当需要同时改变多个单元格数值时,需使用ctrl+enter的方式进行填充,即先选中同一列中 需要修改的一个或多个单元格(可以不连续),输入数值 然后ctrl+enter填充。
代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False '关闭事件检测
Dim coll As New Collection '定义集合,用来存放选中单元格行号
H = 0
'计算选中单元格数值总和
For Each ca In Target.Cells
H = H + ca.Value
coll.Add (ca.Row)
Next
H = (55 - H) / (10 - n) '计算其他单元格数值
'将H填充到其他单元格
For i = 1 To 10
test = 0 '如果i值在集合中,说明该行不需要填充计算后的数值,test为1
For Z = 1 To coll.Count
If i = coll.Item(Z) Then
test = 1
End If
Next
If test <> 1 Then
Cells(i, j).Value = H
End If
test = 0
Next
Application.EnableEvents = True '开启事件检测
End Sub
假设实测值1998所在单元格为B3,改为公式: =C3+D3 往下拖拉公式 E3中输入公式: =MAX(B3:B16)-MIN(B3:B16) B16根据你的实际数据行修改。