Excel 如何动态更改单元格的公式

Excel 如何动态更改单元格的公式,excel,vba,Excel,Vba,我试图改变学生总成绩的计算公式。最初有两列,如果单击“添加”按钮,也会添加一个新列,因此应更改公式 我在Excel中的公式是=SUM(J7,H7),即只加上百分比 我的问题是,我不知道如何重置公式并更改为 =SUM(J7,H7,F7,D7)/[no. of items added after clicking the add button] 有什么办法解决这个问题吗 注意:列是交替的,不是串联的。如果公式: =SUM(IF(MOD(COLUMN(K7)-COLUMN(C7:J7

我试图改变学生总成绩的计算公式。最初有两列,如果单击“添加”按钮,也会添加一个新列,因此应更改公式

我在Excel中的公式是
=SUM(J7,H7)
,即只加上百分比

我的问题是,我不知道如何重置公式并更改为

       =SUM(J7,H7,F7,D7)/[no. of items added after clicking the add button]
有什么办法解决这个问题吗


注意:列是交替的,不是串联的。

如果公式:

=SUM(IF(MOD(COLUMN(K7)-COLUMN(C7:J7),2)=1,C7:J7,0))
这样,当您添加列时,它将自动调整大小(前提是您通过实际插入列来添加列)

K7
是带公式的单元格,
C7:J7
是数据行的所有单元格


输入。

这一点的关键是C5:J5中的合并单元格。这有一个定义要考虑的整个区域的。可以与大量偶数列一起使用,以查看合并区域中适合的列。继续与所涉及的行相交将产生正确范围的结果

我不太清楚这个求和函数的作用。样本中的数字并不表示任何明显的位置。这使用列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
之后


main
调用sub将首先在第7行设置一个新的求和公式,然后在第8行设置一个新的求和公式。添加或删除列需要重新运行sub,但您的列可能是通过代码添加的,这可能是更大例程的一部分。

hi。。我收到了零(0)输出,因为8的MOD是2,因为列(K7)-列(C7:J7)等于8。您是否按Ctrl+Shilf+Enter输入公式@smz?另外,对于任何整数
X
,MOD(X,2)将不会是除
0
1
之外的任何值。