有没有办法动态更改用于 MS Excel 计算的范围?

Is there a way to dynamically change the range used for a calculation in MS Excel?

我有这样一个数据集 -

slice time_id weight
1 0 10
2 0 20
3 0 30
1 1 10
2 1 5
3 1 25
1 2 30
2 2 10
3 2 20

获取排名列的最佳方法是什么,该列计算与前一个 time_id 对应的切片的排名? 例如,相同 table 的输出应如下所示 -

slice time_id weight Rank
1 0 10 0
2 0 20 0
3 0 30 0
1 1 10 3
2 1 5 2
3 1 25 1
1 2 30 2
2 2 10 3
3 2 20 1

我尝试了 excel rank 函数(必须在函数中手动设置 rank 范围,rank(slice, range) for every time_id),但是手动工作太多并且我有数百个切片和时间段。那么实现这一目标的最佳方法是什么?

我的objective是根据time_id-1

期间的权重找到time_id的前n个切片

从 Microsoft 支持处获得了解决方案并且有效-

把这个公式放到E2里往下拉 =IF($B2=0,0,COUNTIFS($B$2:$B$100,INDEX($B$2:$B$100,ROW(2:2)-4),$C$2:$C$100,"> "&INDEX($C$2:$C$100,ROW(2:2)-4))+1)