我需要你的支持,以找到排名考虑以下1.采购订单编号1.集团1.开始日期在这种情况下,需要分别计算所有PO的不同等级,还需要根据日期选择等级,但需要分别考虑PO和组结果需要在等级(D列)中显示数字
此致Indika
0pizxfdo1#
不确定为什么第13行的预期结果是2,而不是3,但请尝试:=COUNTIFS(A4:A18,A4:A18,B4:B18,B4:B18,C4:C18,"<="&C4:C18)这将产生包含所需结果的溢出范围。
=COUNTIFS(A4:A18,A4:A18,B4:B18,B4:B18,C4:C18,"<="&C4:C18)
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的解决方案在大范围内计算得更快。
d
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)))))
3条答案
按热度按时间0pizxfdo1#
不确定为什么第13行的预期结果是2,而不是3,但请尝试:
=COUNTIFS(A4:A18,A4:A18,B4:B18,B4:B18,C4:C18,"<="&C4:C18)
这将产生包含所需结果的溢出范围。
whitzsjs2#
如果您的范围改变,这可能更容易维护。您需要做的只是扩展范围
d
。不过,Jos的解决方案在大范围内计算得更快。
ycl3bljg3#
Google Sheets对寻找一种更快的方法来为组分配序列号很感兴趣。如果你感兴趣,可以使用其中一种推荐的方法(它在N(数据的行数)中或多或少是线性的),在Excel中看起来如下所示:
但是很明显,只有当你有大量的数据时,额外的复杂性才是值得的。
如果您只想根据第一列和第三列进行排名,并且它们已经预先排序,那么公式会简单得多: