【发布时间】:2016-04-01 15:24:22
【问题描述】:
使用公式,我希望为 A 列中的每个唯一值获取 C 列的最大值,然后我还想将 B 列中的相应值返回到 C 列的最大值。输出应该是第二个屏幕截图中的数据摘要。我已经尝试过数据透视表、条件格式和此链接中的帮助,但没有成功Get the maximum values of column B per each distinct value of column A
用公式可以吗?
【问题讨论】:
使用公式,我希望为 A 列中的每个唯一值获取 C 列的最大值,然后我还想将 B 列中的相应值返回到 C 列的最大值。输出应该是第二个屏幕截图中的数据摘要。我已经尝试过数据透视表、条件格式和此链接中的帮助,但没有成功Get the maximum values of column B per each distinct value of column A
用公式可以吗?
【问题讨论】:
所以对于最大数量使用 AGGREGATE() 函数:
=AGGREGATE(14,6,$C$2:INDEX(C:C,MATCH(1E+99,C:C))/($A$2:INDEX(A:A,MATCH(1E+99,C:C))=I2),1)
然后用一个简单的 SUMIF() 求容量:
=SUMIFS(B:B,A:A,I2,C:C,K2)
AGGREGATE() 函数是在 Excel 2010 中引入的。
对于其他版本,不太健壮的数组公式 MAX(IF()) 将代替 AGGREGATE:
=MAX(IF($A$2:INDEX(A:A,MATCH(1E+99,C:C))=I2,$C$2:INDEX(C:C,MATCH(1E+99,C:C))))
作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 确认。正确完成后,Excel 会自动将 {} 放在公式周围以表示数组公式。
另外,如果您拥有最新的 Office 365 或使用在线应用程序,则以下非 CSE MAXIFS() 也可以使用:
=MAXIFS($C$2:INDEX(C:C,MATCH(1E+99,C:C)),$A$2:INDEX(A:A,MATCH(1E+99,C:C)),I2)
这两个不如 AGGREGATE() 健壮,因为如果数据中有错误,它们会中断。 AGGREGATE() 将忽略它们。
【讨论】:
这是在表格中使用数组公式的另一个选项。我没有从工作表中的 A1 开始执行此操作,因此图像有我的单元格/行 ID 可以帮助!
单元格 M17:=IFNA(INDEX([Host], MATCH(0, COUNTIF($M$16:M16, [Host]), 0)),"Unknown") +Ctrl+Shift+Enter
单元格 N17:=MAX(IF([Host]=[@UniqueHost],[Duration])) +Ctrl+Shift+Enter
细胞 O17:=IFNA(INDEX([Capacity],MATCH([@UniqueHost]&[@MaxDuration],[Host]&[Duration],0)),0) +Ctrl+Shift+Enter
【讨论】: