Excel – 在forumla范围之外添加一行

目前我的工作表中有几个SUM函数的设置。

让我使用H2:H34作为例子:如果我在该范围内添加一行,sum函数将自动调整。 问题是当我添加新行时,它低于范围(H:33以下)。 在这种情况下,我只需要突出显示列并将范围展开/拖动到需要的位置。 总共有8列正在执行求和function。 这是唯一可能通过使用macros?

=SUBTOTAL(3,H2:H34) 

你的公式是范围减去一行的范围,我们可以使用这个:

 =SUBTOTAL(3,H2:INDEX(H:H,ROW()-1)) 

现在,在添加或删除行时,引用将保持不变。

如果有可能第2行将被删除,你会得到#Ref错误。 为了避免这一点,你可以使用这个公式:

 =SUBTOTAL(3,INDEX(H:H,2):INDEX(H:H,ROW()-1)) 

现在没有特定的单元格引用,添加或删除不会影响公式,范围将是dynamic的。

在这里输入图像说明


在这里输入图像说明

你可以使用像= sum(range1)之类的命名范围;

从第1行开始,select列F中的第一个空单元格(不使用偏移量)

find第一个空单元格来更改指定范围的引用。

触发它将是困难的…有可能使用on_save?

或选项2 ….闪避位,但可以工作….

你说你的总和在H35单元格内……也许把它移到h36,然后在35(0.1行高)中创build一个虚拟的隐藏行。 这样,当你添加一行,它总是高于35.使用总和H1:H35,它会一直自动更新? 它不是一个整洁的解决scheme,但应该工作

使用下面的代码,你需要调整列“H”到你需要的任何列。

 Dim sumtest As Variant sumstest = Application.WorksheetFunction.Subtotal(9, Range("H2:H" & ActiveSheet.Cells(ActiveSheet.Rows.Count, "H").End(xlUp).Row))