excel 根据两个或三个标准计算等级

tyu7yeag  于 2023-01-27  发布在  其他
关注(0)|答案(3)|浏览(200)

我需要你的支持,以找到排名考虑以下
1.采购订单编号
1.集团
1.开始日期
在这种情况下,需要分别计算所有PO的不同等级,还需要根据日期选择等级,但需要分别考虑PO和组
结果需要在等级(D列)中显示数字

此致Indika

0pizxfdo

0pizxfdo1#

不确定为什么第13行的预期结果是2,而不是3,但请尝试:
=COUNTIFS(A4:A18,A4:A18,B4:B18,B4:B18,C4:C18,"<="&C4:C18)
这将产生包含所需结果的溢出范围。

whitzsjs

whitzsjs2#

=LET(d,   A4:C18,
     a,   INDEX(d,,1),
     b,   INDEX(d,,2),
     c,   INDEX(d,,3),
MAP(      SEQUENCE(ROWS(d)),
LAMBDA(   r,
SUM((a=INDEX(a,r))*(b=INDEX(b,r))*(c<=INDEX(c,r))))))

如果您的范围改变,这可能更容易维护。您需要做的只是扩展范围d
不过,Jos的解决方案在大范围内计算得更快。

ycl3bljg

ycl3bljg3#

Google Sheets对寻找一种更快的方法来为组分配序列号很感兴趣。如果你感兴趣,可以使用其中一种推荐的方法(它在N(数据的行数)中或多或少是线性的),在Excel中看起来如下所示:

=LET(startrow,4,
rows,COUNTA(A:A)-1,
endrow,startrow+rows-1,
Data,INDEX(A:A,startrow):INDEX(C:C,endrow),
sData,SORTBY(Data,INDEX(Data,,1),1,INDEX(Data,,2),1,INDEX(Data,,3),1),
sRows,SORTBY(ROW(Data),INDEX(Data,,1),1,INDEX(Data,,2),1,INDEX(Data,,3),1),
ranks,SCAN(1,SEQUENCE(rows),LAMBDA(a,c,IF(c=1,1,IF(OR(INDEX(INDEX(sData,,1),c-1)<>INDEX(INDEX(sData,,1),c),INDEX(INDEX(sData,,2),c-1)<>INDEX(INDEX(sData,,2),c)),1,a+1)))),
SORTBY(ranks,sRows))

但是很明显,只有当你有大量的数据时,额外的复杂性才是值得的。

如果您只想根据第一列和第三列进行排名,并且它们已经预先排序,那么公式会简单得多:

=LET(startrow,4,
rows,COUNTA(A:A)-1,
endrow,startrow+rows-1,
Data,INDEX(A:A,startrow):INDEX(A:A,endrow),
SCAN(1,SEQUENCE(rows),LAMBDA(a,c,IF(c=1,1,IF(INDEX(Data,c-1)<>INDEX(Data,c),1,a+1)))))

相关问题