MS Excel:我怎样才能使Max()更有效率?

我有一组如下所示的数据:

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字段是数字,可以sorting – 有更智能地findMaxByID的方法吗?

您可以使用数据透视表来查找每个唯一ID的最大值:请参阅此链接的示例。

一旦你有了这个表, VLOOKUP应该使你能够快速find每个ID MaxByID

一旦你通过IDsorting,你可以添加列来获取开始行号和计数每个唯一。
这两个数字允许您计算唯一值范围的大小和位置。
那么你可以使用MAX(OFFSET(StartValueCell,StartThisUnique-1,0,CountThisUnique,1))来获得最大值

这可能会更快

 {=IF(A2=A1,C1,MAX(($A$2:$A$24=A2)*($B$2:$B$24)))} 

由于您的数据似乎是sorting的,您可以看到ID是否与上面的行匹配,并简单地将最大值向下复制。