Excel:INDIRECT(ADDRESS(...))与OFFSET(...)

Ima*_*889 1 excel reference

似乎使用Excel功能INDIRECT(ADDRESS(...)),OFFSET(...)可以互换使用.

例如,以下两个公式将相同的结果返回到绝对引用:

= INDIRECT(ADDRESS(1,1))

= OFFSET(<current cell>,1-ROW(),1-COLUMN())
Run Code Online (Sandbox Code Playgroud)

类似地,接下来的两个公式将相同的结果返回给相对引用(在这种情况下,例如,这些公式返回该公式下单元格中的公式值):

= OFFSET(<current cell>,1,0)

= INDIRECT(ADDRESS(ROW()+1,COLUMN()))
Run Code Online (Sandbox Code Playgroud)

我的问题是:一种方法总是优先于另一种吗?在我看来,它INDIRECT(ADDRESS(...))适用于更多绝对类型引用,并OFFSET(...)适用于更多相对类型引用,但如上所示,任何一种方法都可用于完成任一类型的引用.或者,使用这两种优于这两种选项的功能是否有完全不同的替代方案?

Sco*_*ner 5

两者都不是优选的,因为它们都是挥发性功能,并且它们中的太多会影响计量时间.

每次应用程序重新计算时,易失性函数都会重新计算,即使基础数据没有更改.

使用INDEX而不是非易失性:

=INDEX($1:$1048576,ROW()+1,COLUMN())
Run Code Online (Sandbox Code Playgroud)

这只会在它引用的数据发生变化时重新计算.

仅当工作表是变量时才使用INDIRECT.

OFFSET几乎总能被INDEX取代.