【问题标题】:Excel Formula using Index/Match使用索引/匹配的 Excel 公式
【发布时间】:2017-10-04 00:39:54
【问题描述】:

我正在处理订单的活动日志。我的目标是找出被拒绝然后最终被释放的订单数量。如果备注以“D”开头,则订单被拒绝,任何其他备注都是释放。

如果Remark 以“D”开头匹配表中的顺序#,并且Date 大于“D”remark 的日期,则返回发布日期。

这是我正在使用的公式,但我缺少日期逻辑,它返回第一个订单 # 匹配。

=SUM(IF(LEFT(C13,1)="D",INDEX($A$2:$E$2305,MATCH(E13,$E$2:$E$2305,0),4),1))

【问题讨论】:

  • FWIW:据我所知,不需要总和。没有它,你应该得到相同的答案。
  • 那么结果应该是什么?

标签: excel if-statement indexing match


【解决方案1】:

如果最终发布日期始终低于拒绝,则将索引匹配设置为从下一行开始应该可以解决此问题。对于图像,我无法剪切和粘贴数据以进行检查。

对于突出显示的行:

=IF(LEFT(C13,1)="D",INDEX(A14:$E$2305,MATCH(E13,E14:$E$2305,0),4),1)

这确实假设拒绝只会发生一次。

【讨论】:

    【解决方案2】:

    如果您的数据并非总是按升序排序,请使用以下数组公式:

    =IF(LEFT(C13,1)="D",INDEX($D$2:$D$2305,MATCH(1,(E13=$E$2:$E$2305)*(D13<$D$2:$D$2305),0)),1)
    

    作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 而不是 Enter 来确认。如果操作正确,Excel 会在公式周围加上{}

    如果没有找到匹配项,此公式将显示错误,订单从未发布以处理该错误我们可以这样做:

    =IF(LEFT(C13,1)="D",IFERROR(INDEX($D$2:$D$2305,MATCH(1,(E13=$E$2:$E$2305)*(D13<$D$2:$D$2305),0)),"Not Released"),1)
    

    现在,如果订单从未发布,那么您将收到 Not Released 您可以将其更改为您想要的任何内容。

    【讨论】:

    • 谢谢斯科特。它并不总是按升序排列。该公式应该拉动发布日期。我认为这个公式很接近,但是当发布就在它的正下方时,它仍然说没有发布。可能还需要补充一条逻辑 Remark 不是以 D 开头的?
    • 你用Ctrl-Shift-Enter输入公式了吗?
    • 我做了,它说“未发布”。
    • 同样这个公式是根据你的设计的,它是先输入到第13行。然后复制/上下拖动。 F2中的公式是什么?
    • 我的错,我的&gt; 错误应该是&lt;。见编辑@HannahSawyer
    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 2023-03-12
    • 2017-03-22
    • 2017-11-04
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多