MS Excel:如何让Max()更高效?

时间:2011-09-01 15:46:20

标签: excel performance array-formulas

我有一组看起来像这样的数据:

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的方法?

3 个答案:

答案 0 :(得分:4)

您可以使用数据透视表查找每个唯一ID的最大值:有关示例,请参阅this link

拥有该表后,VLOOKUP可让您快速找到每个MaxByID的{​​{1}}。

答案 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是否与上面的行匹配,只需将最大值复制下来。