Excel 根据A列的每个不同值获取B列的最大值

Excel 根据A列的每个不同值获取B列的最大值,excel,excel-formula,Excel,Excel Formula,我有一份Excel电子表格,格式如下: A,B X,1 X,5 Y,4 Y,11 X,7 Z,1 我想为A列的每个不同值获取B列的最大值-如何通过纯Excel公式实现 期望的结果顺序是不相关的: A,B Y,11 X,7 Z,1 换句话说,我想要Excel版本的SQL查询 SELECT A,max(B) FROM myTable GROUP BY A 任何版本的Excel都可以接受,但我使用365版 Pivot表是一种可以接受的方法,我目前自己使用Pivot,但我更喜欢真正的公

我有一份Excel电子表格,格式如下:

A,B
X,1
X,5
Y,4
Y,11
X,7
Z,1
我想为A列的每个不同值获取B列的最大值-如何通过纯Excel公式实现

期望的结果顺序是不相关的:

A,B
Y,11
X,7
Z,1
换句话说,我想要Excel版本的SQL查询

SELECT   A,max(B)
FROM     myTable
GROUP BY A
任何版本的Excel都可以接受,但我使用365版

Pivot表是一种可以接受的方法,我目前自己使用Pivot,但我更喜欢真正的公式-问题的主要目的是增强我对Excel公式编程的理解。A列和B列中没有VBA使用数组公式:

y和z也一样

数组公式必须使用Ctrl+Shift+Enter键输入,而不仅仅是Enter键

请注意公式栏中的大括号

编辑1:

要自动生成公式,请首先将A列复制到C列

然后使用“数据”选项卡中的“删除重复项”功能:

然后在单元格D1中输入数组公式:

并抄写:


公式只输入一次,然后复制下来

透视表是正确答案

选择列A的标题并将其拖动到“行标签”部分。 选择列B的标题并将其拖动到“值”部分。 单击“值”部分中B列标题上的箭头,然后选择“值字段设置”。 选择最大值
试试下面。注意,我将您想要的输出表移到了D列和E列。您不需要将任何值硬编码到公式中

资料

公式


加里的学生的答案是正确的。我加了一些东西

此外,还有指向该方法的链接:

可以通过以下几种方式生成不同的值列表:

这里有一些链接指向一个或两个不同列表的方法。所有具有数组公式的函数:



如果A中有100个不同的值,我必须用你的解决方案手工编写100个不同的公式,对吗?@DVK,如果你只想使用公式。数据透视表将使用公式生成信息@DVK有一种方法可以自动生成100个公式,而无需键入每个公式!如果您可以演示如何使用公式生成并将其放入电子表格中,我不仅会更改投票,而且很可能会接受这样的答案:@DVK请参阅我的edit1question非常明确地指出Pivot表不是正确的答案。这是可以接受的,因为它确实起作用,但提出问题的主要原因是学习如何通过公式来做——我已经知道我可以通过透视来做。问题说透视表是一种可以接受的方法。我认为这意味着他们是一个可以接受的完成任务的途径。在这种情况下,它们是迄今为止最好的选择,除非你想按照Gary的学生的建议输入多个数组公式..我不是反对你使用枢轴,而是反对你正确的描述。正确是一种依赖于特定语境的主观评价——在我的问题的语境中,它远远不正确。只是,嗯,好吧-我主要是把它添加为“好”,因为有些人非常讨厌带有任意性的问题,不能通过假设它们是家庭作业问题来使用方法X限制。误解了你当时对透视表条件的措辞。别担心。正如其他答案所显示的,有一些方法可以解决这些问题,但依我看,它们都很难处理,而且不会随着数据集的增长而扩展。我希望这是不言而喻的,但需要澄清的是:依赖于将A列中的单个值硬编码到公式中的公式是不可接受的。这显然是Garys答案的一个重大改进,但您没有使用公式生成E列,所以你的答案似乎至少在我们展示E是如何获得的情况下,也需要硬编码值。如果这是不正确的,请在E上展开。用于生成不同值的数组公式只是返回A1的值,用于为我输入的所有单元格。那很有趣。我会仔细检查公式。如果每个单元格中的公式完全相同,我可以复制您的问题。是否粘贴到E2中,然后向下拖动?这样做应该正确使用相对和绝对引用。好的,我知道我做错了什么。我将公式作为单个数组从e2输入到e4,而不是只输入一次,然后将其复制下来。为了让事情更整洁,我会将您的公式包装在iSeries中。YourFormula,如何生成D?我不清楚您在类似摘要的表中是否还没有值。如果您试图在没有D的情况下填充E,您可以在单元格D2中使用以下公式并填充={INDEX$A$2:$A$7,MATCH0,COUNTIF$D$1:D1,$A$2:$A$7,0}如果您使用*则-是多余的,则使用此公式就足够了:={MAX$D1=A1:A6*B1:B6}-但一般来说,最好按照其他答案中的建议使用IF,因为如果 这个公式不能给出正确的答案
=MAX(IF(A1:A6="x",B1:B6))
=MAX(IF(A$1:A$14=C1,B$1:B$14))
D   E
Y   11
X   7
Z   1
E2 Formula: ={MAX(--($D1=A1:A6)*B1:B6)}
E3 Formula: ={MAX(--($D2=A2:A7)*B2:B7)}
E4 Formula: ={MAX(--($D3=A3:A8)*B3:B8)}