【问题标题】:Excel - Formula to create an array of lookup values based on a criteriaExcel - 根据条件创建查找值数组的公式
【发布时间】:2015-01-07 20:21:25
【问题描述】:

我一直在为这个看似简单的问题寻找解决方案,但到目前为止都失败了。我在 Excel 中有一个这样的表:

Column 1   Column 2
apples        1
apples        2
bananas       5
apples        3
bananas       4

我需要的是一个公式,它根据第 1 列的条件返回第 2 列中的值数组。因此,如果我选择“苹果”,我的输出数组应该是 {1,2,3}。该输出应兼容在标准 SUM(SUMIFS()) 公式中使用。

提前感谢您的任何见解

问候, 安德烈

编辑:输出数组中元素的顺序并不重要

【问题讨论】:

  • 如果在您的示例中交换了 1 和 2,那么您是否希望输出为 {2,1,3}(基于它们出现的顺序)或仍然为 {1,2,3} (升序排序)?
  • 顺序无关紧要。它可以是 {1,2,3} 或 {2,1,3}。

标签: excel excel-formula


【解决方案1】:

我假设你想要这样的东西

=IF(A2:A6="apples",B2:B6,"")

对于您的示例,它将返回您的值以及像这样的“空字符串”

{1;2;"";3;""}

您可以使用此版本按升序返回值

=SMALL(IF(A2:A6="apples",B2:B6),ROW(INDIRECT("1:"&COUNTIF(A2:A6,"apples"))))

那会给你

{1;2;3}

如果您在另一个公式中使用它,您需要使用 CTRL+SHIFT+ENTER

来“输入数组”

【讨论】:

  • 感谢巴里,感谢您的快速回答。你的公式很有效。然而,在进一步工作之后,我遇到了一个意想不到的问题:我还需要确保输出数组只包含唯一的项目。原始数据中的数字在多行中重复,但我的 SUM(SUMIFS()) 只能算一次。有什么建议吗?
  • 我认为这是可能的,但可能相当复杂 - 可能值得您考虑不同的方法 - 您可以使用 MATCH 将您的范围与=IF(A2:A6="apples",B2:B6,"") 的输出进行比较,然后是否有空白或重复在那个范围内没关系.....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 2020-02-13
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
相关资源
最近更新 更多