【问题标题】:ARRAYFORMULA version of a formula produces different results than the regular formula公式的 ARRAYFORMULA 版本产生的结果与常规公式不同
【发布时间】:2021-04-22 05:18:55
【问题描述】:

我在下面添加了指向 Google 表格的链接,在电子表格中 column E 有公式:

=choose(iferror(match($A2,{"Cancelled","Closed","Pending Approval", "Billed"},0),5), "Closed", "Picked Up", "Entered", "Picked Up", if($B2="Yes", if($C2="- None -","Processing" ,"Ready"), "Approved"))

评估一些订单统计数据,结果符合预期。 Column D 具有相同公式的 ARRAYFORMULA 版本:

=array_constrain(arrayformula(choose(iferror(match($A$2:$A,{"Cancelled","Closed","Pending Approval", "Billed"},0),5),"Closed", "Picked Up", "Entered", "Picked Up", if($B$2:$B="Yes",if($C$2:$C="- None - ","Processing" ,"Ready"),"Approved"))),counta($A$2:$A),1)

arrayformula 版本中,IF 语句始终返回'false' 并计算为"Ready"

我想使用arrayformula来使结果动态化,因为订单数据更新频繁,行数变化。

虽然我怀疑存在错误,但该公式直到最近才正常工作,任何人都可以帮助使其按预期工作吗?

参考

https://docs.google.com/spreadsheets/d/1De8hffSvhDAvB3A4DjWre44r8DVEcwqNn5ToXriLjc8/edit?usp=sharing

【问题讨论】:

  • 在您的数组公式中,文字值- NONE - 包含一个多余的空格——一个换行符和两个空格。它与 C 列中的值不匹配。
  • 已修复(试图使其更易于阅读),结果相同。

标签: google-sheets


【解决方案1】:

这确实有点奇怪。先尝试处理“Pending Fulfillment”案例:

=arrayformula( 
  if( 
    A2:A = "Pending Fulfillment", 
    if( 
      B2:B = "Yes", 
      if(regexmatch(C2:C, "None"), "Processing", "Ready"), 
      "Approved" 
    ), 
    choose( 
      iferror( 
        match( 
          A2:A, 
          { "Cancelled", "Closed", "Pending Approval", "Billed" }, 
          0 
        ), 
        5 
      ), 
      "Closed", "Picked Up", "Entered", "Picked Up", iferror(1/0) 
    ) 
  ) 
)

为了简单和易于维护,您可能希望使用 vlookup() 和帮助表中的查找表来执行此类操作。

【讨论】:

  • 感谢@doubleunary,首先处理“Pending Fulfillment”案例确实产生了预期的结果。顺序应该重要吗?我使用 ARRAYFORMULA 的其他公式工作正常,最近开始产生意外结果,我认为使用 ARRAYFORMULA 可能存在一些问题。
  • 我怀疑这个问题与 Google 最近对 switch()isbetween()unique() 等功能的更改有关。但这也可能只是侥幸。
猜你喜欢
  • 2022-07-29
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多