excel - ISERROR 似乎忽略了#REF!由间接生成

标签 excel error-handling excel-formula excel-indirect

我正在尝试使用间接创建对单独工作表的引用。我还想检查它是否有错误,因此我使用 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/

相关文章:

vba - 如何制作条件 IF 语句以调用重新格式化模块

excel - VBA 如何确定是否隐式使用默认属性?

asp.net-mvc-3 - 如何使用HandleError只处理特定类型的Exception,并让其余的Exceptions正常抛出?

list - F# If 语句类型不匹配

php - 如何区分要抛出,授权或验证的错误?

excel-formula - VLOOKUP 值不可用于公式或函数,但应该可以

vba - 我在 Excel 中制作语言翻译 VBA 案例时遇到问题

python - 如何从 pandas diff 获取单元格位置?

Excel按升序排序,不包括对角线元素

excel - 使用10 ^创建函数的UDF问题