我正在尝试使用INDIRECT创建对单独工作表的引用。我也想检查它是否有错误,因此我通过使用ISERROR作为开头。
假设有一个名为“Sat 7.23”的选项卡,我想访问单元格D2。使用INDIRECT并将格式化的日期转换为文本,我创建以下公式:
=INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2")
换句话说,INDIRECT告诉我进行以下引用:
='Sat 7.23'.D2
选项卡存在时,此功能将正常运行(返回 100 )。但是...如果选项卡不存在怎么办? INDIRECT返回 #REF! ,这是可以预期的。因此,我在其前面抛出了一个ISERROR:
=ISERROR(INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2")
即使INDIRECT正在生成 #REF,这也不会返回任何内容(或者我猜为 FALSE )! 错误,因此应为 TRUE 。应该不是吗?
更进一步:
=IF(ISERROR(INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2")),0,INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2"))
在这种情况下,ISERROR始终为true,因此该IF始终转到其“else”语句。由于引用无效,因此整个IF语句将返回 #REF !!
最佳答案
我不确定哪种区域语言使用nn来表示Sun-Sat格式的掩码,但是ddd在EN-US系统中使用,并且工作表和单元格地址之间是否带有感叹号。
=IFERROR(INDIRECT("'"&TEXT(H1,"ddd m.d")&"'!D2"), 0)
复制到上方一个单元格(H0上的
#REF!
作为单元格地址)时,该函数将返回零。关于excel - ISERROR似乎忽略了#REF!由INDIRECT产生,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38340783/