【问题标题】:Excel - Retrieve value in an arrayExcel - 检索数组中的值
【发布时间】:2019-05-16 08:12:33
【问题描述】:

在我的组织中,有几个 excel 函数可以返回超过 2000 行和多列的大型数组。

虚拟代码/虚拟示例:

{=FunctionThatReturnArray(param1)}

param1 是日期

我需要检索组合“鞋子”“黄色”在不同日期的售价。

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

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

我尝试使用下面的索引功能,但由于鞋子/黄色组合并不总是在第五行,它不起作用。

{=INDEX(FunctionThatReturnArray(param1),5,4)}

其中 5 是 RowNumber,4 是 ColNumber

我相信我需要以某种方式使用匹配功能,但在 2 个不同的列上。

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

提前致谢和亲切的问候 拉哥

【问题讨论】:

  • 我不确定这是否适用于“虚拟”数组。但是您是否尝试过使用=SumIfs(),在这种情况下,当数组/表格实际上在工作表上实现时效果很好。
  • 处理数组很快——为什么不直接遍历整个事情呢?
  • 我不太清楚 - 组合鞋/黄色会出现在多个日期吗?如果是,会发生什么?
  • 我已经意识到日期是你的函数的一个参数,所以看起来你只需要一个值。

标签: arrays excel indexing


【解决方案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 日的数字表示。

【讨论】:

  • 嗨,汤姆,你就是那个男人。非常感谢它解决了我的问题。亲切的问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 2020-02-10
  • 2014-03-12
  • 2021-12-14
  • 2012-04-02
  • 1970-01-01
相关资源
最近更新 更多