=IFERROR(INDEX(IF({1,0},ROW($1:14),B$1:B14),MOD((TEXT(MAX((1-COUNTIF(K$1:K1,B$2:B14))*COUNTIFS(A:A,"东区",C:C,">44834",C:C,"<44866",B:B,B$2:B14)*100.01+ROW($2:14)),"[<99]景")+ROW(A1)/1%%)/10^{4,0,-2},100),{1,2,1}),"")
1.COUNTIF(K$1:K1,B$2:B14)是检测B$2:B14包含的人是否已经出现在K列当前行以上的单元格中
2.COUNTIFS(A:A,"东区",C:C,">44834",C:C,"<44866",B:B,B$2:B14)就求出符合要求的人员出现次数!
3.*100.01+ROW($2:14)是把次数与行数加权(EXCEL公式常用套路),把次数与行数捆绑在一起,同时便于按次数排序。
4.TEXT(,"[<99]景")这段,把不符合条件的数据转化成文本
5.+ROW(A1)/1%%是把前面加权和TEXT转化后的结果再加权给个1-n的数列
6.MOD(,/10^{4,0,-2},100)把上面加权的数转化成3列,分别对应“序号”,“名称”和“次数”
7.INDEX(IF({1,0},ROW($1:14),B$1:B14),,{1,2,1})按6的结果,分别取数组IF({1,0},ROW($1:14),B$1:B14)中对应的值
8.IFERROR对INDEX二参中错误值(不符合条件的行被TEXT变成文本,文本参与计算变成错误值)容错——变成“”--即假空!
|