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

似乎使用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(...))适用于更多的绝对types引用, OFFSET(...)适用于更多的相对types引用,但如上所示,可以使用任一种方法来完成这两种types的参考。 或者,是否有一个完全不同的select,使用这两个function比这两个选项都优越?

两者都不是首选,因为它们都是易失性函数,其中太多会影响计算时间。

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

使用INDEX代替它是非易失性的:

 =INDEX($1:$1048576,ROW()+1,COLUMN()) 

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

只有当工作表是variables时才使用INDIRECT。

OFFSET几乎总是可以用INDEXreplace。