如何避免添加一个新行到subtotaled范围的第一行来保护小计公式

我有一个Excel工作表,其中包括许多组和子组。 每个小组都有自己的小计。 只要我不知道用户需要多less个子组,我只为每个子组保留了3行空白,并创build了一个触发自动复制和插入复制行macros的button。

现在我需要避免用户在任何子组的第一行和最后一行时触发button。 (如果复制并插入第一行,小计公式不会识别新添加的行,因为它将超出范围,最后一行有另一个特定的公式,我不希望用户在上面复制)

我一直在search和其他Excel博客很长一段时间,但由于我的名单是非常dynamic的,有许多不同的小计,没有一个适合我的情况。

我怎样才能定义我不同的小计范围(也许他们的标题的行)的所有的第一行和最后一行,以避免它们被复制,然后插入上面?

请参阅我的Excel表格的打印屏幕

我可以想象有两种方法可以做到这一点。 当按下“新build行”button时,检查当前行是否是标题/子标题…

  1. 通过检查其格式(例如特定的背景颜色等)。

    If Not Worksheets("Sheet1").Range("A" & iRow).Interior.Color = 15004911 Then 'copy that row End If 
  2. 或者使用一个额外的帮助列来指定行为标题行或不可复制的行。 如果你不想帮助者列被看到,你可以隐藏它。

     If Not Worksheets("Sheet1").Range("X" & iRow).Value = "Header" Then 'copy that row End If 'where X is the helper column 

    如果是标题行,则拒绝复制过程。

一种不涉及编程的方法是将总和范围扩展到不会改变的行。 因此,您可以在标题行中启动小计(假设该行中相关单元格中没有内容)。 另一种方法是在每个总和范围的顶部和底部都有一个隐藏的行,并且包含在总和范围内。 所以你总结第10到14行,但是10和14会隐藏(和空),用户将只显示行11,12和13.添加一个新行将推动隐藏的行,并扩大小计。

另一种方法是使用间接函数。

说你的公式是

 =SUBTOTAL(9,H7:H10) 

如果使用下界的间接值,它将始终引用上面的单元格,而不pipe它们之间添加了多less行。

 =SUBTOTAL(9,H7:INDIRECT("H"&ROW()-1)) 

并进一步,使用上面的标题行作为锚点,总是加起来的标题和小计之间的差距。

  =SUBTOTAL(9,INDIRECT("H"&ROW(H6)+1):INDIRECT("H"&ROW()-1))