似乎使用Excel函数INDIRECT(ADDRESS(...))
和OFFSET(...)
可以互换使用。
例如,以下两个公式将相同的结果返回到绝对引用:
= INDIRECT(ADDRESS(1,1))
= OFFSET(<current cell>,1-ROW(),1-COLUMN())
类似地,接下来的两个公式将相同的结果返回给相对引用(在这种情况下,例如,这些公式返回该公式下单元格中的公式值):
= OFFSET(<current cell>,1,0)
= INDIRECT(ADDRESS(ROW()+1,COLUMN()))
我的问题是:一种方法总是优先于另一种吗?在我看来,INDIRECT(ADDRESS(...))
适用于更多绝对类型引用,OFFSET(...)
适用于更多相对类型引用,但如上所示,任何一种方法都可用于完成任一类型的引用。或者,使用这两个优于这两个选项的函数是否有完全不同的替代方法?
答案 0 :(得分:5)
两者都不是首选,因为它们都是挥发性功能,而且它们中的太多都会影响计算时间。
每次应用程序重新计算时,易失性函数都会重新计算,即使基础数据没有更改。
使用INDEX而不是非易失性:
=INDEX($1:$1048576,ROW()+1,COLUMN())
只有当它引用的数据发生变化时,才会重新计算。
仅当工作表是变量时才使用INDIRECT。
OFFSET几乎总是可以用INDEX替换。