Arrays Excel-检索数组中的值

Arrays Excel-检索数组中的值,arrays,excel,indexing,Arrays,Excel,Indexing,在我的组织中,有几个excel函数可以返回大数组,比如2000多行和几列 虚拟代码/虚拟示例: {=FunctionThatReturnArray(param1)} 其中param1是日期 我需要检索不同日期的组合«鞋子»«黄色»的售价 我不想为我感兴趣的每个日期显示整个数组 相反,我只想显示我需要的值 我试着使用下面的索引函数,但是由于组合Shoes/Yellow并不总是在第五行,所以它不起作用 {=INDEX(FunctionThatReturnArray(param1),5,4)}

在我的组织中,有几个excel函数可以返回大数组,比如2000多行和几列

虚拟代码/虚拟示例:

{=FunctionThatReturnArray(param1)}
其中param1是日期

我需要检索不同日期的组合«鞋子»«黄色»的售价

我不想为我感兴趣的每个日期显示整个数组

相反,我只想显示我需要的值

我试着使用下面的索引函数,但是由于组合Shoes/Yellow并不总是在第五行,所以它不起作用

{=INDEX(FunctionThatReturnArray(param1),5,4)}
其中5是行数,4是列数

我相信我需要以某种方式使用Match函数,但是在2个不同的列上

如果不在工作表上显示整个数组,我怎么能做到这一点

提前感谢并致以亲切的问候
Largo

我不确定这是否是您想要的答案,但您是对的,您必须在第2列和第3列上进行匹配,然后索引到第4列,如下所示:

=INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},MATCH(1,
(INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},0,2)=B2)*
(INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},0,3)=C2),0),4)
在我使用数组常量测试它的地方,需要对数组函数进行多次引用才能实现这一点


顺便说一句,43466是2019年1月1日的数字表示。

我不确定这是否是您想要的答案,但您是对的,您必须在第2列和第3列上匹配,然后索引到第4列,如下所示:

=INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},MATCH(1,
(INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},0,2)=B2)*
(INDEX({43466,"Pants","Yellow",40;43466,"Shirt","Green",20;43466,"Shoes","Blue",70;43466,"Shoes","Yellow",75},0,3)=C2),0),4)
在我使用数组常量测试它的地方,需要对数组函数进行多次引用才能实现这一点


顺便说一句,43466是2019年1月1日的数字表示。

我不确定这是否适用于“虚拟”阵列。但是你试过使用
=SumIfs()吗
在这种情况下,当数组/表实际在工作表上具体化时,这种方法非常有效。处理数组很快-为什么不循环整个过程?我不太清楚-鞋/黄组合是否会出现在多个日期上,如果是,会发生什么?我意识到日期是函数的一个参数,所以看起来您只需要一个值。我不确定这是否适用于“虚拟”数组。但是你试过使用
=SumIfs()吗
在这种情况下,当数组/表实际在工作表上具体化时,这种方法非常有效。处理数组很快-为什么不循环整个过程?我不太清楚-鞋/黄组合是否会出现在多个日期上,如果是,会发生什么?我意识到日期是函数的一个参数,看起来你只想要一个值。嗨,汤姆,你就是那个人。非常感谢它解决了我的问题。对汤姆很好,你就是那个人。非常感谢它解决了我的问题。问候