使用索引/匹配的 Excel 公式

Posted

技术标签:

【中文标题】使用索引/匹配的 Excel 公式【英文标题】:Excel Formula using Index/Match 【发布时间】: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:据我所知,不需要总和。没有它,你应该得到相同的答案。 那么结果应该是什么? 【参考方案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

以上是关于使用索引/匹配的 Excel 公式的主要内容,如果未能解决你的问题,请参考以下文章

Excel 技术篇 - 利用Match公式返回匹配的最后一个数据的索引

如何为多变量索引匹配公式创建 UDF

excel vba索引匹配数组以分隔文件

Excel索引与引用另一个工作簿的多个条件匹配

Excel - SUMIF 索引和匹配

在索引/匹配公式中求和