Excel:查找与另一列匹配的列中的最小/最大值

时间:2014-01-03 12:50:55

标签: excel lookup-tables

我有一个有两列的表,比如A:B。 我在A列中有一个单独的列表(在D列中)列出了所有不同的值。 对于D列中的每个目标值,我想在col A与目标匹配的所有行中找到B列中的最小值和最大值。 例如,如果数据如图所示,

    col A   col B        col D
 1  7.5     1.00         7.5      1.00   1.20
 2  7.5     1.04         8        1.08   1.45
 3  7.5     1.08         8.5      1.17   1.83
 4  7.5     1.15
 5  7.5     1.20
 6  8       1.08
 7  8       1.13
 8  8       1.20
 9  8       1.29
10  8       1.38
11  8       1.43
12  8       1.45
13  8.5     1.17
14  8.5     1.22
15  8.5     1.26
16  8.5     1.35
17  8.5     1.42
18  8.5     1.51
19  8.5     1.58
20  8.5     1.64
21  8.5     1.69
22  8.5     1.74
23  8.5     1.79
24  8.5     1.83

我想让公式返回最后两列(最小和最大)。

注意:

  1. 即使引用超出最后一行的范围(例如,在公式中使用$A$8:$A$50,不一定是$A$8:$A$24),也可以方便地使用某些内容,以便新数据可以添加到A,B列的底部,一切都会自动更新。

  2. 列A,B实际上会包含其他数据,标题等,所以我猜某些公式可能不适用于对$A:$A等整列的引用。

  3. 编辑:我刚刚发现了一些相似/相关的帖子

    Find MIN/MAX date in a range if it matches criteria of other columns

    Conditional Min and Max in Excel 2010

    select min value in B column for same values in A columns excel?

    Given value in column A, find min/max in column B in EXCEL

    find max or min in excel, with conditions

4 个答案:

答案 0 :(得分:6)

它对我有用。

for min:

=MIN(IF(($A$1:$A$50=D1),($B$1:$B$50)))

for max:

=MAX(IF(($A$1:$A$50=D1),($B$1:$B$50)))

注意,它是一个数组公式,所以你需要按 CTRL + SHIFT + ENTER

答案 1 :(得分:2)

您可以使用数组公式为您提供所需的答案。

对于分钟,您可以使用单元格E1中的公式:

{=MIN(IF($A:$A=D1,$B:$B))}

并且单元格F1的最大公式为:

{=MAX(IF($A:$A=D1,$B:$B))}

要输入数组公式,您应该输入除大括号(大括号)以外的所有内容,然后在按下回车键时按Ctrl和Shift键...这将添加大括号,公式将被视为数组式。

输入后,您可以将公式复制为其他匹配值

数组公式通过计算每个组合来工作。它将计算A1中的值是否与D1相同,如果是,它将给出B1的值,那么如果A2的值与D1相同,则它将给出B2的值,依此类推。这将为您提供B列中值的列表(或数组),其中A中的值是匹配的。然后将MIN / MAX计算为正常值。

答案 2 :(得分:2)

INDEX函数可以帮助您通过使用某些数学建立标准公式来避免CSE,或者将任何非匹配值设为天文数字取决于您是否正在寻找MAX或{{ 1}}结果。

伪MAXIF公式稍微容易一点,所以我会从那里开始。

MIN

当数学使用时,Excel将任何布尔TRUE语句视为 1 ,将任何FALSE视为 0 。将B列中的值乘以 1 会使值保持不变;乘以 0 将导致零。 =MAX(INDEX(B:B*(A:A=D1), , )) 函数将未更改的值和零的数组传递到INDEX函数,具体取决于是否符合条件。结果将是B列的最大值,其中A列等于标准。

伪MINIF公式实质上是通过数学排除任何不匹配的值来翻转过程,只留下从中选择MAX的匹配值。

MIN

同样,TRUE是 1 而FALSE是 0 但这次我们用它来添加1E + 99( 1 后跟任何非匹配值的 99 零,不是任何东西的=MIN(INDEX(B:B+(A:A<>D1)*1E+99, , )) 。匹配值将添加 0×1E + 99 ,等于零,不会改变它们的值。

MAXIF and MINIF with standard formulas

我使用的完整列单元格范围引用不会对计算延迟产生负面影响,而不会影响类似的数组公式

答案 3 :(得分:-1)

假设数据中没有间隙,使用命名范围,您可以让引用自己计算 e.g。

  

ARange = OFFSET($ A $ 2,0,0,COUNT($ A:$ A))
  BRange = OFFSET($ B $ 2,0,0,COUNT($ A:$ A))

(我在两者中使用相同的 COUNT 以确保区域大小相同)

现在我可以使用数组公式=MAX((ARange=D2)*(BRange))来获取最大值(和min相同)。
使用CTRL + SHIFT + Enter

输入数组公式 请参阅@Simoco的答案,了解正确的公式