Excel公式仅查找可视单元格的条件最小值

Excel公式仅查找可视单元格的条件最小值,excel,excel-formula,aggregate,array-formulas,subtotal,Excel,Excel Formula,Aggregate,Array Formulas,Subtotal,首先,我必须道歉,如果我做了一些公式名称的翻译错误。很难描述我需要什么,因为波兰语Excel公式名称与英语公式名称完全不同,而且无法在语言和Excel中的名称之间切换。但是让我们试试 我知道一些解决方案,例如使用{=MIN(如果($a$2:$a$10=$A11;$B$2:$B$10;”“)}数组公式查找条件最小值,以及使用小计(105;$B$2:$B$10)或聚合(5;3;$B$2:$B$10)查找过滤后的一组单元格的最小值(仅可见单元格的最小值)公式,但我无法找到一种方法将这两种解决方案合并在

首先,我必须道歉,如果我做了一些公式名称的翻译错误。很难描述我需要什么,因为波兰语Excel公式名称与英语公式名称完全不同,而且无法在语言和Excel中的名称之间切换。但是让我们试试

我知道一些解决方案,例如使用
{=MIN(如果($a$2:$a$10=$A11;$B$2:$B$10;”“)}
数组公式查找条件最小值,以及使用
小计(105;$B$2:$B$10)
聚合(5;3;$B$2:$B$10)查找过滤后的一组单元格的最小值(仅可见单元格的最小值)
公式,但我无法找到一种方法将这两种解决方案合并在一起,以获得满足条件的所有可见单元格的最小值

换句话说,我只需要得到范围
B2:B10
中可见单元格的最小值,但只能从范围
A2:A10
中的值等于单元格
A11
中特定值且
B2:B10
中的值大于零的行中获取

+---+-----+
| A |  B  |
+---+-----+
| 1 | 170 |
........... <== here some hidden (filtered or grouped) rows with other values
| 1 | 120 |
| 1 | 100 | <== minimum for "1"
| 1 |   0 | <== not included for "1" - only > 0
| 2 | 110 |
........... <== here some hidden (filtered or grouped) rows with other values
| 2 | 109 |
| 2 | 105 | <== minimum for "2"
| 3 |  50 | <== minimum for "3"
| 3 |   0 | <== not included for "3" - only > 0
+===+=====+
| 1 | 100 |  <= expected results of formula - minimum values, greater then zero, for groups "1", "2" and "3"
| 2 | 105 |
| 3 |  50 |
+---+-----+
+---+-----+
|A | B|
+---+-----+
| 1 | 170 |
...........  使用允许数组处理的聚合(15,7,…):

=AGGREGATE(15,7,$B$2:$B$10/(($A$2:$A$10=$F12)*($B$2:$B$10>0)*(SUBTOTAL(3,OFFSET($B$2,ROW($B$2:$B$10)-MIN(ROW($B$2:$B$10)),,1)))),1)
使用允许数组处理的聚合(15,7,…):

=AGGREGATE(15,7,$B$2:$B$10/(($A$2:$A$10=$F12)*($B$2:$B$10>0)*(SUBTOTAL(3,OFFSET($B$2,ROW($B$2:$B$10)-MIN(ROW($B$2:$B$10)),,1)))),1)

我临时帮了自己的忙,在每个单元格中添加了一个“技术”栏(例如“C”),其中有一个简单的公式

=SUBTOTAL(103,$B2)
=SUBTOTAL(103,$B3)
=SUBTOTAL(103,$B4)
... etc.
最后的数组公式检查此列中的值是否等于1

{=MIN(IF($A$2:$A$10=$A11,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
{=MIN(IF($A$2:$A$10=$A12,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
{=MIN(IF($A$2:$A$10=$A13,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
现在它完全按照我的预期工作

请原谅我在示例中使用分号。我的Excel本地化需要分号而不是逗号(正如我在英文版中看到的那样)


问候-McVik

我暂时帮了自己的忙,在每个单元格中添加了一个带有简单公式的“技术”栏(例如“C”)

=SUBTOTAL(103,$B2)
=SUBTOTAL(103,$B3)
=SUBTOTAL(103,$B4)
... etc.
最后的数组公式检查此列中的值是否等于1

{=MIN(IF($A$2:$A$10=$A11,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
{=MIN(IF($A$2:$A$10=$A12,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
{=MIN(IF($A$2:$A$10=$A13,IF($B$2:$B$10>0,IF($C$2:$C$10=1,$B$2:$B$10,""),""),""))}
现在它完全按照我的预期工作

请原谅我在示例中使用分号。我的Excel本地化需要分号而不是逗号(正如我在英文版中看到的那样)


问候-McVik

谢谢@ScottCraner,但它在分组/筛选行上对我没有预期的效果。我得到的最小值是整个范围内的最小值,不仅仅是可见单元格的最小值。它的工作原理与
{=MIN.K(IF($A$2:$A$10=$A11;IF($B$2:$B$10>0;$B$2:$B$2:$B$10;”“);“”;1)}
{=MIN(IF($A$2:$A$10=$A11;IF($B$2:$B$B$10;”“);”“))}
几乎完美。)忽略我已经在“偏移量”附近的某个地方感到困惑的事实;-)我把它翻译成本地的Excel,但它仍然不适合我。经过几次尝试后,我发现它只适用于过滤的行,但不幸的是不适用于分组的行。在我的第一篇博文中,我可能对“过滤细胞群”写得不够清楚。我对单元格进行了分组,我的示例中的“小计”或“聚合”公式适用于过滤单元格和分组单元格,因此我不知道这有时会产生影响。谢谢@ScottCraner,但它对分组/过滤行的效果并不理想。我得到的最小值是整个范围内的最小值,不仅仅是可见单元格的最小值。它的工作原理与
{=MIN.K(IF($A$2:$A$10=$A11;IF($B$2:$B$10>0;$B$2:$B$2:$B$10;”“);“”;1)}
{=MIN(IF($A$2:$A$10=$A11;IF($B$2:$B$B$10;”“);”“))}几乎完美。)忽略我已经在“偏移量”附近的某个地方感到困惑的事实;-)我把它翻译成本地的Excel,但它仍然不适合我。经过几次尝试后,我发现它只适用于过滤的行,但不幸的是不适用于分组的行。在我的第一篇博文中,我可能对“过滤细胞群”写得不够清楚。我已经对单元格进行了分组,我的示例中使用了“小计”或“聚合”公式,用于过滤和分组的单元格,所以我不知道这有时会产生不同。