是从一个命名范围指定一个列比在一个完整的列上计算更有效?

Excel的引擎下,你认为如果我使用命名范围,比如说MAX计算,那么效率会更高

我有一个名为范围myNmdRangA1:Z20000没有数据在工作表的其余部分。 列A包含一些数字值。 指定范围明天可能会调整到500k行或100行。

我最好在第1列中findMAX

Max("A:A")

以下是更有效率和/或占用较less的存储? (这可以certificate)

Max(index(myNmdRang,0,1))

据我了解,您正在计划使用的命名范围比查看整列更有效,因为您只需查看较less的条目。


为了节省手动更新字段的时间,您可以执行以下操作:

您可以dynamic分配名称范围的长度。 也就是说,它的长度将根据条目的数量自动调整。

假设没有条目,并且列A中唯一的数字是数字,而不是使用= A1:Z2000作为您创build指定范围的定义范围,则可以使用:

  =offset($A$1,0,0,counta(A:A),26) 

计数器(A:A)将查看数字条目的数量并定义命名范围的长度。

所以不是使用查看第1列的max(A:A),可以为第1列创build另一个命名范围,比如MyFirstRange,或者您可以将其定义的范围放在max命令中,我会做一些事情喜欢这个:

  define a named range as: MyFirstRange = offset($A$1,0,0,counta(A:A),1) =Max(MyFirstRange) OR if you dont want to name another range =max(offset($A$1,0,0,counta(A:A),1)) 

我知道这并不完全说明这两种方法的效率。 这样可以节省您每天手动重新定义您的命名范围。 我希望能帮助你。

这可能对TS没有帮助,因为我的答案迟了一年多,但是为了将来的参考,我倾向于使用:

 MAX(myNmdRang A:A) 

这将给出myNmdRang的子集和列A的最大值。

一些优点:

  • 子集明显less于A:A,实际上等于INDEX(myNmdRang; 1; 0)
  • 参考是相对的
  • 我在INDEX重新计算的时候遇到了问题,我不知道为什么(另一个话题),所以我倾向于select

缺点是,如果命名范围位于另一个工作表上,则公式不起作用,因为A:A始终是活动工作表上的A列。