【问题标题】:Standard Excel formula behaves differently depending on which version of Excel I use标准 Excel 公式的行为取决于我使用的 Excel 版本
【发布时间】:2022-03-16 05:07:04
【问题描述】:

我有我认为的标准公式,根据我使用的 Excel 版本(Excel 365 或 Excel 2019)的不同,它的行为会有所不同

=IF(F5=$M$1;IFERROR(IF(AND(IFERROR(FIND("CONV";B5;1);"NY");F5=$M$1);"KONV");IF(F5=$M$1;"NY";"ORG"));"ORG")

在下面的两个屏幕截图中,Excel 版本 2019 位于顶部,Excel 版本 365 位于其下方。在第一个屏幕截图中,一切都相同,但在第二张图片中,“NY”在 Excel 2019 中变成了一个错误(这是正确的,也是我想要的),但在 Excel 365 中我得到了一个错误的 TRUE。

我的问题不是要修正公式,让它起作用。相反,我想知道为什么 Excel 365 和 Excel 2019 之间首先存在差异。

【问题讨论】:

  • 哇。令人着迷的发现,谢谢。这甚至可能是一个错误——我想不出AND 现在将文本条目视为TRUE 的正当理由。其他逻辑函数在 365 中似乎没有这样做:虽然 =AND("x",1) 返回 TRUE (??),=OR("x",0) 返回 FALSE=IF("x",1) 返回 #VALUE! 错误。
  • @JosWoolley Excel 不会将文本视为True,而只是忽略它。 =AND("Text",True) 将评估为 True=AND("Text",False) 将评估为 False
  • @MichaelWycisk 不确定我理解。您给出的示例并不能证明您的假设:它们会产生与AND 将文本解释为TRUE 相同的结果。
  • @JosWoolley 没错,我没想到。但是:=OR("Text",True) 也计算为 True,而 =OR("Text",False) 计算为 False(如果任何文本被认为是 True,最后一个示例应该计算为 True - 它不是)。唯一奇怪的是 Excel 2019 和 O365 对它的评估不同。

标签: excel excel-formula


【解决方案1】:

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

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

  • 作为参数提供的文本值或空单元格将被忽略。
  • 如果在评估期间未找到或创建逻辑值,AND 函数将返回 #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 之前的版本中,任何文本值都会导致错误除非它是以数组格式写入的通过单元格拉入 -参考。

我只能预计与 ms365 的不同之处在于后者将自动评估单个文本值作为数组,因为动态数组功能的机制。

【讨论】:

  • 谢谢。这让它变得很有意义。 “无论是有意还是无意,在 ms365 之前的版本中,任何文本值都会导致错误,除非它以数组格式写入或通过单元格引用拉入。”
  • 先生,再次感谢您的精彩解释!先生,ORXOR 也一样吗!
  • @MayukhBhattacharya,是的,这些功能似乎也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多