索引匹配以返回具有多个条件的MAX日期

时间:2018-12-03 21:42:25

标签: excel formula

对此表示歉意,我假设这很简单,但是几个小时的SO谷歌搜索却无济于事(也很生气,因为我知道我可以在Python或BI中简单地做到这一点,但需要在excel中做到这一点。首席执行官问过,我的老板说如果我不说D:,我会被解雇

对我足够的抱怨:

考虑以下数据集:

ID, Date, Review, Review    Status
1   01/02/18, "Cool",       Positive
1   01/03/18, "Awesome", "  Positive
1   01/01/18, "Cumbersome", Negative
1   01/02/18, "Rubbish!", " Negative

我目前正在使用数组类型索引匹配项,以根据一些条件获得最新的评论

我有两列,一列为肯定,一列为负。

我想在每个列中返回最新的正面评价,但是我不确定如何在以下公式中获得最长日期:

{=index(C2:C4, MATCH(1,(1 = A2:A4)*("Positive" = D2:D4)*(maxdatehere = B2:B4),0))}

我拥有的数据大约为7k行,并且是Google审核数据,几乎与上面的示例匹配。

我宁愿不使用VBA,因为我以前从未真正使用过(但会勉强使用)

因为这是excel,所以我还没有创建Google演示表,但是很乐意这样做,以便于专家和其他人(如果他们有一天在这里找到这样的方式)受益。

1 个答案:

答案 0 :(得分:2)

如果您拥有Office 365:

=INDEX(C2:C5, MATCH(1,(1 = A2:A5)*("Positive" = D2:D5)*(MAXIFS(B:B,A:A,1,D:D,"Positive") = B2:B5),0))

退出编辑模式时,请按Ctrl-Shift-Enter而不是Enter进行确认。

runs after catch(Throwable )


如果您有2010年或以后,则:

=INDEX(C:C,AGGREGATE(15,7,ROW(C2:C5)/((A2:A5=1)*(D2:D5="Positive")*(AGGREGATE(14,7,B2:B5/((A2:A5=1)*(D2:D5="Positive")),1)=B2:B5)),1))

正常输入。

enter image description here