我正在尝试使用间接创建对单独工作表的引用。我还想检查它是否有错误,因此我使用 ISERROR 作为开头。
- H1 是日期值,格式为“nn m.d”。在本例中,42574 返回 Sat 7.23
- “周六 7.23”.D2 等于 100
假设有一个名为“Sat 7.23”的选项卡,我想访问单元格 D2。使用间接并将格式化日期转换为文本,我创建了以下公式:
=INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2")
换句话说,INDIRECT告诉我进行以下引用:
='Sat 7.23'.D2
当选项卡存在时,此功能完美运行(它返回100)。但是...如果该选项卡不存在怎么办? INDIRECT 返回 #REF!,这是预期的。因此,我在它前面抛出一个ISERROR:
=ISERROR(INDIRECT("'" & TEXT(H1, "nn m.d") & "'.D2")
这不会返回任何内容(或者我猜FALSE),即使INDIRECT生成#REF!错误,因此应该>正确。不应该吗?
进一步:
=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!由间接生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340783/