Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Excel中使用数组函数提取有序列表_Arrays_Excel - Fatal编程技术网

Arrays 在Excel中使用数组函数提取有序列表

Arrays 在Excel中使用数组函数提取有序列表,arrays,excel,Arrays,Excel,我有一个excel报告,显示每个员工的销售结果。列为位置、区域、用户名和销售。它按销售额降序排序,显示公司中哪位员工的销售额最好 我正试图为每个地区增加一张表格,显示该地区所有员工的结果,并按销售额进行排序(以避免我自己每天对许多地区的结果进行排序) 数据表前12行的示例版本: G H I J K X Row Location Username Sales Region

我有一个excel报告,显示每个员工的销售结果。列为位置、区域、用户名和销售。它按销售额降序排序,显示公司中哪位员工的销售额最好

我正试图为每个地区增加一张表格,显示该地区所有员工的结果,并按销售额进行排序(以避免我自己每天对许多地区的结果进行排序)

数据表前12行的示例版本:

    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!错误,因此忽略不匹配项。