Excel:替换INDIRECT()以动态引用工作表

时间:2017-11-23 16:32:56

标签: excel excel-formula

我有一张包含大量INDIRECT()函数的工作表,用于从同一工作簿中的其他工作表中提取数据。像

这样的东西
=INDIRECT(SheetName&"!A1")

我已经意识到INDIRECT()是一个易失性函数,因此每次在任何工作簿中进行任何更改时它都会重新计算。这使得Excel非常慢,特别是在打开多个工作簿时。

是否还有其他函数可以替换INDIRECT()以使用动态工作表名称进行查找?

2 个答案:

答案 0 :(得分:1)

  • 自动计算的转变(强烈建议不要)
  • 构建UDF函数,默认情况下为非易失性函数:
Public Function IndirectNotVolatile(sheetName As String, sheetRange As Range) as Variant
    Set IndirectNotVolatile = Worksheets(sheetName).Range(sheetRange.Address)
End Function

答案 1 :(得分:0)

Lisa:您可以将CHOOSE与查找表结合使用以替换INDIRECT。请参阅我对此问题的回答中的屏幕截图:Excel Vlookup with cell reference

另外,请在Excel tables vs plain data查看我的答案,在那里我提供一些有关如何解决慢速电子表格根本原因的信息。