起初,如果我在公式名称的翻译上犯了一些错误,我必须道歉。很难描述我需要什么,因为波兰语Excel公式名称与英语完全不同,并且不可能在语言和Excel中的名称之间切换。但让我们试试。。。
我知道使用例如{=MIN(IF($A$2:$A$10=$A11;$B$2:$B$10;""))}
阵列公式来找到条件最小值的解决方案,以及使用例如SUBTOTAL(105;$B$2:$B$10)
或AGGREGATE(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 |
+---+-----+
问候-McVik
使用AGGREGATE(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,""),""),""))}
现在它和我预想的完全一样。
PS。请原谅我在例子中使用分号。我的Excel本地化需要分号而不是逗号(正如我在英文版中看到的那样(。
问候-McVik