看来使用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(...)适用于更多的相对类型引用,但是如上所述,这两种方法都可以用来完成两种引用类型。或者,是否有完全不同的替代方法使用这两个功能,而优于这两个选择?

最佳答案

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

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

使用INDEX,它是非 Volatile 的:

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

仅当引用的数据更改时,才会重新计算。

仅当工作表为变量时才使用INDIRECT。

偏移量几乎总是可以用INDEX代替。

关于excel - Excel:INDIRECT(地址(...))vs.偏移量(...),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46490652/

10-10 06:49