标准 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 评估为数组.
我有一个我认为是标准的公式,根据我使用的 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 评估为数组.