在Excel中使用If Large语句并填充表的余数

我有一个数据集,看起来像下面的例子。 我想拉取最后十个事务的列表,按交易datesorting,同时捕获原始数据集中的所有信息列; 如果推销员是吉米,我想这样做。

我很难过 任何想法如何做到这一点?

下面的示例数据集:

Customer Name Customer Group Salesman Transaction Date Sam 1 Jimmy 3/21/2015 Jill 2 Johnny 3/21/2015 Scott 3 Joanny 3/21/2015 Sean 4 Slippy 3/24/2015 Dave 5 Slappy 3/25/2015 Amber 4 Slummy 3/26/2015 Shawn 3 Jimmy 3/24/2015 Matt 2 Johnny 3/26/2015 Matthew 4 Joanny 3/24/2015 Mark 3 Slippy 3/21/2015 Luke 2 Slappy 3/26/2015 John 1 Slummy 3/26/2015 Jonathan 5 Jimmy 3/24/2015 Zach 3 Johnny 3/26/2015 Asher 2 Joanny 3/21/2015 

期望的输出是根据预测交易datesorting的最近10个交易

 Customer Name Customer Group Salesman Forecast Transaction Date 

更新:

我使用这个公式,模仿斯科特的,但它的错误。

 =iferror(index(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Opportunity Name]]:index(All_Incremental_MDA_JV_Forecast__2[Opportunity Name],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date])),aggregate(15,6,row(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Forecast Close Date]]:index(All_Incremental_MDA_JV_Forecast__2[Forecast Close Date],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))-3)/((All_Incremental_MDA_JV_Forecast__2[[#Headers],[Pegasus Stage]]:index(All_Incremental_MDA_JV_Forecast__2[Pegasus Stage],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))="Closed Affirmative - Contract Signed")*(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Forecast Close Date]]:index(All_Incremental_MDA_JV_Forecast__2[Forecast Close Date],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))='MDA-JV'!V10)),countif('MDA-JV'!$V$10:'MDA-JV'!$V10,'MDA-JV'!V10))),"") 

与@Jeeped相比,Mine有一点不同之处。 虽然我偷了INDEX / MATCH,允许范围自动增长和收缩到正确的大小。

列出L1中所需的销售人员姓名,并从交易date开始。 要按照以下顺序获取交易date:

 =IFERROR(AGGREGATE(14,6,$D$2:INDEX(D:D,MATCH(1E+99,D:D))/($C$2:INDEX(C:C,MATCH(1E+99,D:D))=$L$1),ROW(1:1)),"") 

`复制10行。

那么客户名称是指我在第一栏中的交易date:

 =IFERROR(INDEX($A$1:INDEX(A:A,MATCH(1E+99,D:D)),AGGREGATE(15,6,ROW($D$1:INDEX(D:D,MATCH(1E+99,D:D)))/(($C$1:INDEX(C:C,MATCH(1E+99,D:D))=$L$1)*($D$1:INDEX(D:D,MATCH(1E+99,D:D))=I2)),COUNTIF($I$2:$I2,I2))),"") 

推销员栏是一个简单的参考L1。

为了获得组,我使用了一个简单的SUMIFS():

 =IF(I2<>"",SUMIFS(B:B,A:A,F2,C:C,H2,D:D,I2),"") 

![在这里输入图片描述

这将按照从最新开始的datesorting。

AGGREGATE函数可以将连续的匹配行号返回给INDEX函数 。

用H2中的吉米 ,把这个标准公式放在F2中

 =INDEX(A:A, AGGREGATE(15, 6, ROW($A$1:INDEX($A:$A, MATCH(1E+99,$D:$D )))/($C$1:INDEX($C:$C, MATCH(1E+99,$D:$D ))=$H2), ROW(1:1))) 

复制到G2和I2,然后根据需要填写。

jimmy_orders

使用IFERROR函数来避免显示#NUM! 错误,当您用完匹配返回。

这是基于原始数据的sorting顺序。 如果要反转sorting顺序,请将15(AGGREGATE的SMALL子function)更改为14(AGGREGATE的LARGE子function)。 如果原始数据未sorting并且需要sorting结果,则需要先使用类似的伪SMALLIF函数获取最小date,然后在多个条件中使用该数据来检索其他匹配列,并根据需要调整重复date。

ListObject表的附录

首先,在开发公式时暂时重命名表格。 虽然它的当前名称(例如All_Incremental_MDA_JV_Forecast__2 )可能需要用于其他目的,但它现在所做的只是混淆公式; 基本上隐藏了可能立即显而易见的小错误。 为此,我已经将您的表名为aimf2 。 一旦配方开发完成,它可以重新命名为原来的,所有的参考文献将立即更新。

根据下图,I4:L4中的公式是,

 =INDEX(aimf2[Customer Name], AGGREGATE(15, 6, (ROW(aimf2[Customer Name])-ROW(aimf2[#Headers]))/((aimf2[Salesman]=$G$3)*(aimf2[Transaction Date]=L4)), COUNTIF(L$4:L4, L4))) =INDEX(aimf2[Customer Group], AGGREGATE(15, 6, (ROW(aimf2[Customer Name])-ROW(aimf2[#Headers]))/((aimf2[Salesman]=$G$3)*(aimf2[Transaction Date]=L4)), COUNTIF(L$4:L4, L4))) =PROPER($G$3) =AGGREGATE(14, 6, aimf2[Transaction Date]/(aimf2[Salesman]=$G$3), ROW(1:1)) 

如果需要添加错误控制,并填充10行。

jimmy_sales_two
带有ListObject表的示例工作表