尽管有返回值,Google Sheet 单元格仍显示为空白

问题描述 投票:0回答:1

我有一个谷歌表格,旨在为我计算一些东西并使用复杂的公式。在多种情况下,当我单击单元格并选择全部时,它会显示预期值。然而,该单元格在视觉上仍然是空白的,当我运行 =(LEN(B4) 来测试它时,它说长度为零。

我有以下公式:

=IF(ISERROR(INDIRECT(("'"&$A4&" "&B$1&"'!"&(INDIRECT("'"&$A4&" "&B$1&"'!"&"$B$2"))))),"",INDIRECT(("'"&$A4&" "&B$1&"'!"&(INDIRECT("'"&$A4&" "&B$1&"'!"&"$B$2")))))

如果我选择整个公式,它会显示为 66。我尝试复制并粘贴公式,唯一有效的方法是再次从另一个单元格拖动公式。这种情况发生在使用该公式的所有位置,但是一旦我将公式拖过,它就会显示正确的值。格式像平常一样是白底黑字,所以我并不是不让它可见。如果我更改它引用的任何单元格的值,该单元格将再次变为“空白”,我必须重新拖动它才能使其工作。

google-sheets google-sheets-formula formula spreadsheet
1个回答
0
投票

indirect()
公式通常会导致性能问题,尤其是在复制多个单元格时。通常有更好的方法来查找数据,包括 filter()query()vlookup()match() 等函数。使用数组公式,这些函数也可以轻松地一次性应用于一系列单元格。

该公式使用

indirect()
的四个实例:

=IF( 
 ISERROR(INDIRECT(("'"&$A4&" "&B$1&"'!"&(INDIRECT("'"&$A4&" "&B$1&"'!"&"$B$2"))))), 
         "", 
         INDIRECT(("'"&$A4&" "&B$1&"'!"&(INDIRECT("'"&$A4&" "&B$1&"'!"&"$B$2")))) 
)

您可以通过将公式简化为两个

indirect()
实例来提高性能,如下所示:

=iferror(indirect($A4 & " " & B$1 & "!" & indirect($A4 & " " & B$1 & "!" & "B2")))

...然后进一步应用DRY,如下所示:

=let( 
  sheetRef, $A4 & " " & B$1 & "!", 
  cellRef, indirect(sheetRef & "B2"), 
  iferror(indirect(sheetRef & cellRef)) 
)

要进一步提高电子表格性能,请参阅我的优化技巧

© www.soinside.com 2019 - 2024. All rights reserved.