Excel - 拉取帐户/项目值对的最新值

时间:2016-04-25 19:59:50

标签: excel excel-formula vlookup

我有一个包含两个标签的Excel电子表格。 第一个标签包含日期范围的客户商品销售,包括销售日期。 所以1ST标签上的列是

CUSTOMER | ITEM | DATE | QTY | PRICE | EXTENSION

测试数据:

Customer No.    Date     Item     Qty Ship  Price   Ext. 
100207        8/19/2015  7044503    3       90.85   272.55
100207        8/12/2015  7044503    10     90.85    908.5
100207        8/12/2015  7044504    16     91.99    1471.84
100207        7/31/2015  7044505    9      93.41    840.69
100207        7/31/2015  7045427    2         73    146
112179        7/22/2015  6951235    1      23.65    23.65
112179        7/22/2015  6951235    1      23.65    23.65
112179        7/15/2015  6951235    1      23.65    23.65
112179         7/8/2015  6951235    1      23.65    23.65
112179        6/30/2015  6951235    1      23.65    23.65
112179        4/22/2015 0290130075  9       2.75    22.86
112179        9/23/2015 0290130075  9       2.54    22.86
112179         9/9/2015 0290130075  9       2.40    22.86
112308         9/9/2015 VWR40101    1     451.00   451.00
112308        8/31/2015 VWR40101    1     451.00   451.00
112308        8/26/2015 VWR65020    3     186.00   558.00
112308        8/12/2015 VWR65020    2     167.75    335.5
112308        7/31/2015 VWR65020    2     175.00    350.0
112308        7/22/2015 VWR65020    4     177.75    711.0

第二个标签上的列是

CUSTOMER | ITEM | TOTAL SALES

测试数据:

Customer No.    Item      Total
100207          7044503   1181.05
100207          7044504   1471.84
100207          7044505    840.69
100207          7045427    146
112179          6951235    118.25
112179          290130075   68.58
112308          VWR40101    902
112308          VWR65020    1954.5
Grand Total                 6682.91

我正在尝试将另一列添加到第二个标签中 LAST SALE PRICE

我知道这可能是对MAX()MATCH()VLOOKUP()的谴责,但我不确定如何将它们组合在一起以实现我的目标。

谢谢!

2 个答案:

答案 0 :(得分:2)

常规(非数组)公式,调整范围以适合您的数据:

=INDEX(Sheet1!$E$2:$E$20,MATCH(1,INDEX((Sheet1!$A$2:$A$20=A2)*(Sheet1!$C$2:$C$20=B2)*(Sheet1!$B$2:$B$20=MAX(INDEX((Sheet1!$A$2:$A$20=A2)*(Sheet1!$C$2:$C$20=B2)*Sheet1!$B$2:$B$20,))),),0))

答案 1 :(得分:1)

试试这个数组公式

=INDEX(Sheet1!$E$2:$E$100,MIN(IF((Sheet1!$A$2:$A$100 = A2)*(Sheet1!$B$2:$B$100 = B2)*(Sheet1!$C$2:$C$100 = MAX(IF((Sheet1!$A$2:$A$100 = A2)*(Sheet1!$B$2:$B$100 = B2),Sheet1!$C$2:$C$100))),(ROW(Sheet1!$A$2:$A$100)-1))))

没有测试数据就很难测试。

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

如果您使用的是excel 2010或更高版本,则可以使用以下公式:

=INDEX(Sheet1!$E$2:$E$100,AGGREGATE(15,6,(ROW(Sheet1!$A$2:$A$100)-1)/((Sheet1!$A$2:$A$100 = A2)*(Sheet1!$B$2:$B$100 = B2)*(Sheet1!$C$2:$C$100 = AGGREGATE(14,6,Sheet1!$C$2:$C$100/((Sheet1!$A$2:$A$100 = A2)*(Sheet1!$B$2:$B$100 = B2)),1))),1))