指定命名范围中的列比计算完整列更有效吗?

时间:2016-03-24 09:46:05

标签: excel excel-formula

Excel的引擎盖下,你认为如果我使用命名范围,比如说MAX计算,它会更有效率,例如

我的命名范围myNmdRangA1:Z20000,其余部分没有数据。 A列包含一些数值。命名范围明天可能会调整为500k行或仅100周。

我这样做是为了在第1列找到MAX

Max("A:A")

以下是否更高效和/或占用更少的存储空间? (这可以证明)

Max(index(myNmdRang,0,1))

2 个答案:

答案 0 :(得分:2)

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

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

您可以动态指定名称范围的长度。也就是说,它的长度将根据条目数自动调整。

假设没有条目且A列中唯一的东西是数字,而不是使用= A1:Z2000作为您创建命名范围的定义范围,您可以使用:

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

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

因此,不是使用max(A:A)来查看第1列的全部内容,而是可以为第1列创建另一个命名范围,例如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))

我知道这并不能完全说明两种方法的效率。它只会让您每天手动重新定义您的命名范围。我希望能帮到你。

答案 1 :(得分:0)

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

MAX(myNmdRang A:A)

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

一些优点:

  • 该子集明显少于A:A,实际上等于 INDEX(myNmdRang; 1; 0)
  • 参考是相对的
  • 我在INDEX重新计算方面遇到了问题,我无法弄明白为什么(另一个主题),所以我倾向于选择

缺点是如果命名范围在另一张纸上,则公式不起作用,因为A:A始终是活动纸张上的A列。