有没有办法动态更改用于 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)
我有这样一个数据集 -
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)