Arrays 基于输入的动态excel数组

Arrays 基于输入的动态excel数组,arrays,excel,multidimensional-array,excel-formula,excel-2010,Arrays,Excel,Multidimensional Array,Excel Formula,Excel 2010,我正在寻找一些帮助,在excel中创建基于公式的动态数组 KPI | Tgt |数量|权重 FCR | 0%| 1 | 45% FCR | 60%| 2 | 45% FCR | 80%| 3 | 45% 领先45%| 4%| 25% 领先50%| 5%| 25% 领先200%| 6%| 25% 损耗率| 8%| 7 | 10% 损耗率| 12%| 8 | 10% 损耗率| 100%| 9 | 10% 放弃| 1%| 10 | 20% 放弃| 5%| 11 | 20% 放弃| 200%| 12 |

我正在寻找一些帮助,在excel中创建基于公式的动态数组

KPI | Tgt |数量|权重

FCR | 0%| 1 | 45%

FCR | 60%| 2 | 45%

FCR | 80%| 3 | 45%

领先45%| 4%| 25%

领先50%| 5%| 25%

领先200%| 6%| 25%

损耗率| 8%| 7 | 10%

损耗率| 12%| 8 | 10%

损耗率| 100%| 9 | 10%

放弃| 1%| 10 | 20%

放弃| 5%| 11 | 20%

放弃| 200%| 12 | 20%

因此,如果我在单元格E2中的Leads得分为3%,那么我希望F2中的输出为数字4,即在F2中尝试以下操作:

=INDEX(C:C,AGGREGATE(15,6,ROW(B:B)/((B:B>=E2)*(A:A="Leads")),1))
这将只返回A列中具有“Lead”的行的匹配项。如果您已经或想要将其放入另一个单元格,则可以将其放入另一个引用中

编辑:

根据下面的注释,如果以数组形式输入(CTRL+SHIFT+ENTER),则此公式也适用:

编辑2:

通过组合两种解决方案,我们可以覆盖B列中未排序列表的基础:

{=INDEX(C:C,MATCH(1,(A:A="Leads")*(B:B=AGGREGATE(15,6,B:B/((B:B>=E2)*(A:A="Leads")),1)),0))}

在F2中尝试以下操作:

=INDEX(C:C,AGGREGATE(15,6,ROW(B:B)/((B:B>=E2)*(A:A="Leads")),1))
这将只返回A列中具有“Lead”的行的匹配项。如果您已经或想要将其放入另一个单元格,则可以将其放入另一个引用中

编辑:

根据下面的注释,如果以数组形式输入(CTRL+SHIFT+ENTER),则此公式也适用:

编辑2:

通过组合两种解决方案,我们可以覆盖B列中未排序列表的基础:

{=INDEX(C:C,MATCH(1,(A:A="Leads")*(B:B=AGGREGATE(15,6,B:B/((B:B>=E2)*(A:A="Leads")),1)),0))}

您是否有不同的单元格来查找损耗、放弃等,或者这一个单元格是否也需要以某种方式引用?我有不同的单元格引用每个KPI,如F2,查找Lead等的损耗G2。您有不同的单元格来查找损耗、放弃等,或者这一个单元格是否也需要引用该KPI?我有不同的单元格引用每个KPI,如Lead etcHey Jacob的损耗G2的F2。谢谢你。因为你,我学会了一切。我使用的是Sumproduct和Index的组合,但无法达到使用Aggregate得到的输出。再次感谢你的帮助,不客气。我是从大师自己那里学到的:吉佩德和斯科特·克兰纳。当我了解到它的全部功能时,它似乎是越来越多问题的解决方案!我想我们可以使用匹配而不是聚合来获得相同的结果。例如,将聚合语法替换为match(1,(range=criteria1)*(range>=criteria2),0)。你的意见是对的,如果它是作为数组输入的,那就行了。美好的{=INDEX(C:C,MATCH(1,(A:A=“Leads”)*(B:B>=E2),0))}尽管列B必须按升序排序,但需要注意一点,否则将返回不正确的值。这就引出了第二个问题。有没有办法不用排序就能得到相同的结果?嘿,雅各布。谢谢你。因为你,我学会了一切。我使用的是Sumproduct和Index的组合,但无法达到使用Aggregate得到的输出。再次感谢你的帮助,不客气。我是从大师自己那里学到的:吉佩德和斯科特·克兰纳。当我了解到它的全部功能时,它似乎是越来越多问题的解决方案!我想我们可以使用匹配而不是聚合来获得相同的结果。例如,将聚合语法替换为match(1,(range=criteria1)*(range>=criteria2),0)。你的意见是对的,如果它是作为数组输入的,那就行了。美好的{=INDEX(C:C,MATCH(1,(A:A=“Leads”)*(B:B>=E2),0))}尽管列B必须按升序排序,但需要注意一点,否则将返回不正确的值。这就引出了第二个问题。有没有办法不用排序就能得到相同的结果?