标准 Excel 公式的行为因我使用的 Excel 版本而异

Standard Excel formula behaves differently depending on which version of Excel I use

我有一个我认为是标准的公式,根据我使用的 Excel 版本,Excel 365 或 Excel 2019

,它的表现会有所不同
=IF(F5=$M;IFERROR(IF(AND(IFERROR(FIND("CONV";B5;1);"NY");F5=$M);"KONV");IF(F5=$M;"NY";"ORG"));"ORG")

下面两张截图中,上面是Excel2019版,下面是Excel365版。在第一个屏幕截图中,一切都是一样的,但在第二张图片中,“NY”在 Excel 2019 中变为错误(这是正确的,也是我想要的),但在 Excel 365 中我出错了正确。

我的问题不是修复公式以使其正常工作。相反,我想知道为什么 Excel 365 和 Excel 2019 之间的区别首先存在。

有趣 post。由于手头的问题不合逻辑,解释(或者更确切地说,由于缺乏文档,我的假设)实际上是相反的。简而言之:动态数组 是导致 ms365 和以前版本处理 AND() 函数中每个条件的差异的罪魁祸首。

首先,尽管 ms-documentation 告诉我们 所有 条件都需要评估为 TRUE,但实际情况是还有另外两个我们要牢记的重要规则:

  • 忽略作为参数提供的文本值或空单元格。
  • 如果在计算期间没有找到或创建逻辑值,AND 函数将 return#VALUE。

假设在下面的示例中,值 NY 写入单元格 A1。在 Excel 2019 及更早版本中,您应该会收到以下结果:

Formula Outcome
=AND(TRUE) TRUE
=AND(TRUE,A1) TRUE
=AND(TRUE,"NY") #VALUE
=AND(TRUE,{"NY"}) TRUE
=AND({"NY"}) #VALUE

无论是否有意,在 ms365 之前的版本中,任何文本值都会导致错误除非它是以数组格式编写的 通过 cell-reference.

拉入

我只能期待 与 ms365 的不同之处在于,由于动态数组功能的机制,后者会自动将单个 text-value 评估为数组.