Arrays 在Excel中使用数组函数提取有序列表
我有一个excel报告,显示每个员工的销售结果。列为位置、区域、用户名和销售。它按销售额降序排序,显示公司中哪位员工的销售额最好 我正试图为每个地区增加一张表格,显示该地区所有员工的结果,并按销售额进行排序(以避免我自己每天对许多地区的结果进行排序) 数据表前12行的示例版本:Arrays 在Excel中使用数组函数提取有序列表,arrays,excel,Arrays,Excel,我有一个excel报告,显示每个员工的销售结果。列为位置、区域、用户名和销售。它按销售额降序排序,显示公司中哪位员工的销售额最好 我正试图为每个地区增加一张表格,显示该地区所有员工的结果,并按销售额进行排序(以避免我自己每天对许多地区的结果进行排序) 数据表前12行的示例版本: G H I J K X Row Location Username Sales Region
G H I J K X
Row Location Username Sales Region Region
1 38 John.Doe 85 North1 North1
2 154 John.Smith 83 South2
3 23 E.Williams 83 North1
4 210 M.Williams 79 East5
5 139 Joe.Dawn 77 North2
6 22 Kay.Smith 69 South2
7 51 Jay.Smith 69 South2
8 125 L.Smith 69 East2
9 51 L.Day 69 South2
10 23 23.Guest2 67 North1
11 92 U.Goode 65 North4
我已经成功地创建了一个数组函数,它只提取指定区域中结果的Sales列
{=LARGE(SMALL(IF(IF(ISERROR(K:K),"",K:K)=$X$2,J:J),
ROW(INDIRECT("1:"&COUNTIF(K:K,$X$2)))),F2)}
我现在正在尝试一个数组函数,该函数提取与原始数组中相应销售额匹配的用户名,并且还匹配区域。当一个地区有“关系”或多个员工当月有相同的销售额时,我会遇到麻烦。以下是我从该函数开始的内容:
=INDEX(I:I,MATCH(1,(Y2=J:J)*($X$1=K:K),0)
但当一个地区有多个用户拥有相同的销售额时,这就有麻烦了。所以我试着有条件地去适应,我知道这个功能对单身人士有效,而这个地区只有一个这样的销售
{=IF(COUNTIF($AB$2:AB2,AB2)>1,
INDEX(I:I,
SMALL(IF(J:J=AB2,
IF(K:K=$AB$2,ROW(K:K)-ROW(INDEX(K:K,1,1))+1)),
COUNTIF($AB$2:AB2,AB2))),
INDEX(I:I,MATCH(1,(AC2=J:J)*($AB$2=K:K),0)))}
如果内部零件有效,则内部零件可能足够,但不需要条件:
{=INDEX(I:I,
SMALL(IF(J:J=AB2,
IF(K:K=$AB$2,ROW(K:K)-ROW(INDEX(K:K,1,1))+1)),
COUNTIF($AB$2:AB2,AB2)))}
我将对用户名使用相同的函数。
两个区域的预期成果:
X Y Z AA AB AC AD AE
Region Sales Username Location Region Sales Username Location
North1 85 John.Doe 38 South2 83 John.Smith 154
83 E.Williams 23 69 Kay.Smith 22
67 23.Guest2 23 69 Jay.Smith 51
69 L.Day 51
自从开始打这个问题以来,我找到了一个解决办法,其中包括一些额外的列来完成计算,但仍然想问这个问题,看看是否有可能为知识着想。对于X2中的North1,这些是Y2:AA2的公式
=IFERROR(AGGREGATE(14, 6, ($J$2:$J$999)/($K$2:$K$999=X$2), ROW(1:1)), "")
=IFERROR(INDEX($H:$H, AGGREGATE(15, 6, ROW($2:$999)/(($K$2:$K$999=X$2)*($J$2:$J$999=Y2)), COUNTIF(Y$2:Y2, Y2))), "")
=IFERROR(INDEX($H:$H, AGGREGATE(15, 6, ROW($2:$999)/(($K$2:$K$999=X$2)*($J$2:$J$999=Y2)), COUNTIF(Y$2:Y2, Y2))), "")
根据需要填写
对于AB2中的South2,将Y2:AA2复制到AC2:AE2,并根据需要填写
对于任意数量的员工,他们随着业务的发展而增长(有些人在几个月内不出售任何东西),有没有办法避免设置长度的数组?例如,row($2:$999)。此外,我总是对我尚未在excel中发现的工具感到惊讶。我花了一上午的时间来消化聚合,之前还没有见过“/”的符号来根据另一个数组的条件选择一个数组,我假设它的读数为“结束”。我喜欢iferror()检查,我使用if(iserror())也是出于同样的目的。非常感谢。6告诉聚合忽略错误。/is分区将非匹配项强制为#div/0!错误,因此忽略不匹配项。