我有一组看起来像这样的数据:
ID Value MaxByID
0 32 80
0 80 80
0 4 80
0 68 80
0 6 80
1 32 68
1 54 68
1 56 68
1 68 68
1 44 68
2 54 92
2 52 92
2 92 92
4 68 68
4 52 68
5 74 74
5 22 74
6 52 94
6 52 94
6 46 94
6 94 94
6 56 94
6 14 94
我正在使用{=MAX(IF(A$2:A$100=A2,B$2:B$100))}
来计算MaxByID
列。但是,数据集具有> 100k行,主要是唯一ID:这似乎是一种非常低效的方法,因为C:C中的每个单元都必须迭代A:A中的每个单元格。
ID字段是数字并且可以排序 - 是否有更智能地查找MaxByID的方法?
答案 0 :(得分:4)
答案 1 :(得分:0)
按ID排序后,您可以添加列以获取每个唯一的起始行号和计数。
这两个数字允许您计算唯一值范围的大小和位置。
那么你可以使用MAX(OFFSET(StartValueCell,StartThisUnique-1,0,CountThisUnique,1))来获得最大值
答案 2 :(得分:0)
这可能更快
{=IF(A2=A1,C1,MAX(($A$2:$A$24=A2)*($B$2:$B$24)))}
由于您的数据似乎已排序,您可以看到ID是否与上面的行匹配,只需将最大值复制下来。