Excel:在从另一列匹配的列中查找最小值/最大值
我有一个两列的表,说A:B。 我在列A中有一个单独的列表(在列D中)所有不同的值。对于列D中的每个目标值,我希望findcol 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
我想有公式返回最后两列(最小和最大)。
笔记:
-
即使引用超出最后一行的范围(例如,在公式中使用
$A$8:$A$50
,不一定是$A$8:$A$24
),也可以方便地使用某些方法,以便新数据可以添加在列A,B的底部,一切都自动更新。 -
列A,B实际上将包含其他数据,标题等,所以我猜一些公式可能不适用于整个列的引用,如
$A:$A
编辑 :我刚刚find了一些类似/相关的职位
如果符合其他列的条件,则在一个范围内查找MIN / MAXdate
Excel 2010中的条件最小值和最大值
在B列中select最小值为A列中的相同值excel?
在列A中给定值,在EXCEL的列B中查找最小值/最大值
在excel中find最大或最小值,条件
这个对我有用。
分钟:
=MIN(IF(($A$1:$A$50=D1),($B$1:$B$50)))
最大值:
=MAX(IF(($A$1:$A$50=D1),($B$1:$B$50)))
请注意,它是一个数组公式,因此您需要按CTRL + SHIFT + ENTER
你可以使用数组公式给你你需要的答案。
对于最小值,您可以使用单元格E1中的公式:
{=MIN(IF($A:$A=D1,$B:$B))}
而单元格F1的最大公式为:
{=MAX(IF($A:$A=D1,$B:$B))}
要input一个数组公式,除了大括号(花括号)之外,还要input所有内容,然后在按下回车键的同时按下Ctrl和Shift键…这将添加大括号,公式将被视为数组公式。
一旦input,您可以将公式向下复制到其他匹配的值
数组公式通过计算每个组合来工作。 它将计算A1中的值是否与D1相同,如果是,则将给出B1的值,则如果A2的值与D1相同,则将给出B2的值,依此类推。 这将给你一个B列值的列表(或数组),其中A的值是匹配的。 MIN / MAX然后按正常计算。
INDEX
函数可以通过使用一些mathbuild立一个标准公式来帮助您避免CSE,这个公式可以是零,也可以是天文学的任何不匹配的值,这取决于您是在寻找一个MAX
还是MIN
结果。
伪MAXIF公式更容易,所以我会从那里开始。
=MAX(INDEX(B:B*(A:A=D1), , ))
在math上使用Excel时,Excel会将任何布尔值TRUE语句设置为1 ,将任何FALSE设置为0 。 将列B中的值乘以1会使值保持不变; 乘以0将导致零。 INDEX
函数根据是否符合标准,将未改变的值和零的数组传递给MAX
函数。 结果将是列B的最大值,其中列A等于标准。
伪MINIF公式基本上通过math排除任何不匹配的值,只留下匹配的值来从中selectMIN
。
=MIN(INDEX(B:B+(A:A<>D1)*1E+99, , ))
同样,TRUE是1 ,FALSE是0,但是这次我们使用它来添加1E + 99( 1后跟99个零,这不会是任何事情的MIN
)到任何不匹配的值。 匹配值将被添加到等于0的0×1E + 99 ,并且不会改变它们的值。
我所使用的完整列单元格范围引用不会对计算滞后产生负面影响,而不会对类似的数组公式产生负面影响。
您可以使用命名范围,让引用自行计算,假设数据中没有空白。
例如
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 + Enterinput
请参阅@ Simoco的正确答案