使用 excel 公式返回子集中的最后一项

Returning the last item in a subset with excel formula

在这个例子中,我想标记最近购买过钢笔的任何客户(或列表底部)。我的数据按 CustomerID 和 ServiceDate 排序,最新的排在最后。我希望仅当最后一次购买的是一支笔 (333) 时才能够标记所有客户的交易。 我一直在尝试使用 COUNTA 的公式,但不确定在依赖数据子集时该怎么做。

=INDEX(C:C,COUNTA(C:C))

这将给我列中的最后一个值。

Customer ID Custmer Name    Item Number Item Name   Date        Desired Results
1           Bob             222         Paper       1/1/2016    X
1           Bob             111         Tape        1/1/2017    X
1           Bob             333         Pen         1/1/2018    X
4           Greg            333         Pen         1/1/2015    
4           Greg            111         Tape        1/1/2016    
6           Chris           111         Tape        1/1/2015    X
6           Chris           333         Pen         1/1/2018    X
8           Luke            333         Pen         1/1/2013    
8           Luke            333         Pen         1/1/2014    
8           Luke            222         Paper       1/1/2015    
8           Luke            111         Tape        1/1/2016    
8           Luke            111         Tape        1/1/2018    
9           Tom             333         Pen         1/1/2013    X

您可以通过创建一个额外的列来做到这一点。附加列将使用以下公式查找上次购买钢笔的所有客户:=IF(AND(C2=333,B2<>B3),B2,"").

下一栏将为您提供所需的输出:=IF(OR(B2=$F,B2=$F,B2=$F),"X","")

多亏了乔,我才能够解决这个问题。

我还得再开一个专栏。

我把它放在 F 列中。

=IF(AND(C2=333,B2<>B3),1,"") 

然后在 G 列中。

=IF(AND(COUNTIFS(A:A,A2,F:F,1)=1),"Yes","")

效果很好。