查找指定索引指出的列表或数组中的最小值

时间:2015-11-17 16:37:14

标签: excel excel-vba vba

我有一个200多个数字的清单(来自不同尺寸的钢制工具的废料,用于许多不同的原材料尺寸,我试图找到六种工具的最佳组合,如果在所有工具上使用的话,浪费最少原料尺寸)。我有最少浪费的项目组合及其在列表中的位置(索引)(例如索引编号7,12,9,8,10和11)

现在我需要弄清楚哪些索引指向列表中的最小项。 (即我需要公式来返回索引本身,例如上面示例中的9,如果该索引指向指出的六个值的最小值)

我不能只使用整个列表中的常规MIN()来获取最小值,然后使用MATCH()来查找索引,因为在列表中没有的其他索引处可以找到相同的废物数字,那些都不好(这就是我的开始,但有时发现它指的是非最佳工具)。 听起来像一个简单的问题(也许它是!?)但我似乎无法找到一个有效的解决方案(我不想使用VBA来解决这个问题,除非我不得不这样做。)

有什么想法吗?

(参见本例中返回的红色错误索引)

enter image description here

1 个答案:

答案 0 :(得分:2)

AGGREGATE¹ function使用SMALL子功能( 15 )和 k 达到最小值1.强制任何不匹配输入错误并使用 6 选项丢弃这些错误将获得匹配工具的最小值。另一个AGGREGATE匹配将任何匹配折扣到最小但不是工具选择将产生正确的结果。

Aggregate min conditions

C4中的公式是,

=INDEX($A$6:$A$22, AGGREGATE(15, 6, ROW($1:$17)/((C$6:C$22=AGGREGATE(15, 6, C$6:C$22/(ROW($1:$17)=$C$2:$H$2), ROW(1:1)))*(ROW($1:$17)=$C$2:$H$2)), 1))

enter image description here

根据需要填写。

单元格突出显示的条件格式

显示浅灰色背景填充的条件格式,表示与C2中的工具子集匹配的工具索引(a6:A22):H2由selectin A6:J22创建,然后根据以下公式创建CF规则,

=ISNUMBER(MATCH($A6, $C$2:$H$2, 0))

通过首先选择C6:J22并使用以下公式表示CF规则来创建突出显示适当过滤的最小值的条件格式设置规则,

=$A6=C$4

这最后一条CF规则可能看似简单,但一旦得到答案,就没有理由重新处理嵌套计算。

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。