我正在尝试更改学生总成绩的公式。最初有两列,如果单击添加按钮,则还会添加新列,因此应更改公式。
我在Excel中的公式为=SUM(J7, H7)
,即只添加百分比。
我的问题是,我不知道如何重置公式并更改为
=SUM(J7,H7,F7,D7)/[no. of items added after clicking the add button]
有什么方法可以解决这个问题吗?
注意:列是备用的而不是串联的。
答案 0 :(得分:2)
如果你的公式只计算奇数列:
=SUM(IF(MOD(COLUMN(K7)-COLUMN(C7:J7),2)=1,C7:J7,0))
这样,当你添加列时它会自动调整大小(前提是你通过实际插入列来添加它们)。
K7
是具有公式的单元格,C7:J7
是数据行的所有单元格。
答案 1 :(得分:0)
关键是C5中的合并单元格:J5。它有一个Range.MergeArea property,用于定义要考虑的整个区域。 Intersect method可以与大量偶数列一起使用,以查看哪些符合MergeArea。继续与相关行相交将产生正确Range.Address property范围的SUM。
对于我这个SUM功能的去向,我有点不清楚。样本中的数字并不表示任何明显的位置。这使用了列K,行号作为参数输入。
Sub main()
new_formula rw:=7
new_formula rw:=8
End Sub
Sub new_formula(rw As Long)
Dim rng As Range, summative As Range
With Worksheets("Sheet5")
Set summative = .Rows(5).Find(what:="Summative", LookIn:=xlFormulas, LookAt:=xlWhole)
Set rng = Intersect(summative.MergeArea.EntireColumn, _
.Rows(rw), _
Union(.Columns(4), .Columns(6), .Columns(8), .Columns(10), _
.Columns(12), .Columns(14), .Columns(16), .Columns(18)))
With summative.MergeArea
.Cells(.Count).Offset(rw - .Row, 1).Formula = _
"=sum(" & rng.Address(0, 0) & ")"
End With
End With
End Sub
从main
调用sub会在第7行然后在第8行中设置新的总和公式。添加或删除列需要重新运行sub,但似乎您的列可能是通过代码添加的,这可能这个较大程序的一部分。