【问题标题】:Array formula in excel suddenly not working... troubleshootingexcel中的数组公式突然不起作用...故障排除
【发布时间】:2013-06-05 12:27:50
【问题描述】:

我目前正在使用这个数组公式..

 {=LARGE(IF(('Data Input'!$L$3:$L$15000=$B10)*('Data Input'!$H$3:$H$15000>$C10),'Data Input'!$O$3:$O$15000,0),1)}

其中 B10 是文本 ID,例如 658A,L:L 是带有 ID 的列。 C10 是日期,H:H 是日期列。 O:O 是我正在检索的具有 # 值的列。

当与 ctrl,shift,enter 一起使用时,这个公式可以很好地满足我的目的

当我尝试使用时出现问题...

 {=IF('Data Input'!$L$3:$L$15000=$B10,1,0)}

它总是返回 FALSE 结果,即使它在第一个公式中正常工作。

改变结果的第二个公式有什么不同? 这对我来说很奇怪。 谢谢你的帮助。

【问题讨论】:

    标签: arrays excel function if-statement


    【解决方案1】:

    IF 只是比较返回的数组的第一个值,所以只有第一个比较为真时,它才会返回一个真值。

    举例说明:
    公式

    公式: {=IF(A1:A3=B2,1,0)}将;返回 0,除非单元格 A1 更改为 true。要更改结果以使其在任何值为 true 时返回 true,您必须使用一些技巧......

    首先,使用 -- 将 True/False 值更改为 1/0,然后使用 SUM 将它们相加。因为 IF 将任何非零结果视为真,这将导致当任何比较为真时返回 1

    使用新公式{=IF(SUM(--(A1:A3=B2)),1,0)}(仍然是一个数组公式)完成我们的示例,我们得到以下评估步骤:

    =IF(SUM(--(A1:A3=B2)),1,0)
    =IF(SUM(--(A1:A3=2)),1,0)
    =IF(SUM(--({1,2,2}=2)),1,0)
    =IF(SUM(--({False,True,True})),1,0)
    =IF(SUM(0,1,1),1,0)
    =IF(2,1,0)
    =1
    

    【讨论】:

    • 看来我已经屈服于这些论坛上的一个经典错误......为了清楚起见而简化了一个问题,但实际上改变了这个问题。我实际上是在使用 if 语句来查找相对于 ID 的某个日期。示例:=if('Data Input'!$L$3:$L$15000=$B10,C10+((large((datecolumn)-C10),1),0)。我正在查找某个最近的日期ID。可能有更好的方法来做到这一点
    【解决方案2】:

    您的第二个公式本身就是返回一个数组。您只查看该返回数组中的左上角元素 - 这恰好是 FALSE。

    您的第一个公式返回一个标量值;这就是区别。

    如果您想对“1”值求和,那么您的第二个公式可以修改为

    {=SUM(IF('Data Input'!$L$3:$L$15000=$B10,1,0))}
    

    这也是一个标量返回。

    【讨论】:

    • 为了清楚起见,我犯了简化问题的错误。我实际上是在寻找某个 ID 的最近日期。所以我的目标公式看起来更像这样... =if('Data Input'!$L$3:$L$15000=$B10,C10+((large((datecolumn)-C10),1),0)。可能有做一个更好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2010-11-30
    相关资源
    最近更新 更多