Excel命名范围使增加标题和子标题

我正在创build一个电子表格应用程序,这将需要用户填写input表的不同部分。 为了将这些部分分解为逻辑方式,我使用了如下所示的标题和子标题:

输入表单的图像

如果我有很多头文件,那么编号头文件将会有大量的手动工作。 我已经做了一些尝试,通过创build一个名为range的Header1实现这个过程的自动化,这相当于下面图片中的灰色标题。 所以在A2A11单元格中,公式是=Header1Header1命名范围中的公式是:

IF(COUNTA(INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()))))=0,0,INDEX(INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()))),MATCH(ROW(INDIRECT(ADDRESS(ROW()-1,COLUMN()))),INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()))),TRUE)))+1

基本上公式计算列A中的所有值,并加1。 换句话说,无论您在什么工作表(因此使用INDIRECT ),每次在您的单元中调用Header1都会很好地增加。 硬编码的唯一的一个是起始单元格是A1 ,我把它放在一个0,所以它检测到从1开始。

我的问题是 – 以类似的方式,我已经实现了使用命名范围递增标题,我怎样才能做到这一点的子标题? 我上面的图片显示了我试图实现的效果(即2.1 ),但是我希望这是自动的,只需在单元格中input=Header2的公式即可。

编辑 – 我已经得到了这个公式:

=SUM(INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()-1)))) & "." & MAX(1,COUNTA(INDEX(INDIRECT(CONCATENATE("$B$1",":",ADDRESS(ROW()-1,COLUMN()))),MATCH(SUM(INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()))))-1,INDIRECT(CONCATENATE("$A$1",":",ADDRESS(ROW()-1,COLUMN()-1))),FALSE)):INDIRECT(ADDRESS(ROW()-1,COLUMN()))))

…当作为公式放置在单元中时工作,但在命名范围内使用时不起作用。 奇!

好主意使用Defined Names来保存公式。 然而你的公式非常不稳定。

build议在工作簿级别(作用域)创build两个定义的名称,如下所示:

  1. 使用以下公式命名_Hdr (根据需要更改)

     =IF( COLUMN() <> 1, "", 1 + MAX( INDEX(!$A:$A, 1 ) : INDEX(!$A:$A, - 1 + ROW() ) ) ) 
  2. 按以下公式命名_Sub (根据需要更改)

     =IF( COLUMN() <> 2, "", 0.01 + IF( MAX( INDEX(!$A:$A, 1 ) : INDEX(!$A:$A, - 1 + ROW() ) ) > MAX( INDEX(!$B:$B, 1 ) : INDEX(!$B:$B, - 1 + ROW() ) ), MAX( INDEX(!$A:$A, 1 ) : INDEX(!$A:$A, - 1 + ROW() ) ), MAX( INDEX(!$B:$B, 1 ) : INDEX(!$B:$B, - 1 + ROW() ) ) ) ) 

如果子项目小于10则使用0.1 ,如果高于小于100则使用0.01 (根据需要调整)

编辑:添加! 到公式中的列范围,以确保引用将自动更新到使用公式的相应Sheet

上面的公式被分成几行以方便阅读和理解,在创build名称时作为一行input。

另外build议隐藏Define Names (即Visible = False以避免公式被意外更改。

有了以上的名字:

  • 没有必要在第1行input零。
  • 公式适用于忽略任何标签的数字。
  • 他们首先检查公式是在预期的列中input的_Hdr分别是_Hdr_Sub12
  • 由于公式使用数字,他们得到每列的MAX数量,并加10.1来产生下一个数字。
  • 公式不会变化(不使用INDIRECT
  • 他们使用INDEX函数来生成所需的范围。