Arrays Excel-检索数组中的值
在我的组织中,有几个excel函数可以返回大数组,比如2000多行和几列 虚拟代码/虚拟示例:Arrays Excel-检索数组中的值,arrays,excel,indexing,Arrays,Excel,Indexing,在我的组织中,有几个excel函数可以返回大数组,比如2000多行和几列 虚拟代码/虚拟示例: {=FunctionThatReturnArray(param1)} 其中param1是日期 我需要检索不同日期的组合«鞋子»«黄色»的售价 我不想为我感兴趣的每个日期显示整个数组 相反,我只想显示我需要的值 我试着使用下面的索引函数,但是由于组合Shoes/Yellow并不总是在第五行,所以它不起作用 {=INDEX(FunctionThatReturnArray(param1),5,4)}
{=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()吗
在这种情况下,当数组/表实际在工作表上具体化时,这种方法非常有效。处理数组很快-为什么不循环整个过程?我不太清楚-鞋/黄组合是否会出现在多个日期上,如果是,会发生什么?我意识到日期是函数的一个参数,看起来你只想要一个值。嗨,汤姆,你就是那个人。非常感谢它解决了我的问题。对汤姆很好,你就是那个人。非常感谢它解决了我的问题。问候