【问题标题】:Returning multiple values based on search criteria根据搜索条件返回多个值
【发布时间】:2019-02-20 13:59:46
【问题描述】:

我在 A 列中列出了多个州,每个州在 B 列中都有许多对应的值。B 列中的每个值都列出了相同的州。示例:A 列中的第 2 到第 5 行将包含加利福尼亚,第 2 到第 5 行在 B 列中包含第 1 项、第 2 项、第 3 项和第 4 项。

源数据将对最终用户隐藏,因此他们只需输入搜索条件。

在不使用 VBA 的情况下(这将被太多人触及以使 VBA 可行),我正在尝试提出一个数组公式,但以前从未使用过。我希望能够在单元格 G4 中输入特定状态的搜索条件,然后在单独的单元格中返回所有相应的项目。

我拼凑了一些类似下面的东西,但我不确定我是否走在正确的道路上。

[=INDEX($B2:$B$250, SMALL(IF(($G$4=$A1:$A$250), MATCH(ROW($A1:$A$250), ROW($A1:$A$250)), ""),ROWS($A$1:A1)))]

任何帮助都会让我在上级面前看起来不错:)

https://i.stack.imgur.com/DSnXV.jpg

新数组的结果

https://i.stack.imgur.com/aP2qt.jpg

【问题讨论】:

  • “我不确定我是否走在正确的道路上” - 当你使用公式时会发生什么?我建议您发布您的数据的屏幕截图以及您当前的公式落在哪里,假设确实如此。
  • 我添加了一个带有屏幕截图的链接。当我尝试加利福尼亚时,我得到 #Value 错误,当我尝试其他两个州时,我得到 #N/A 错误。

标签: excel


【解决方案1】:

您的公式的一个问题是范围大小不同,这会导致错误。第一个范围是 B2:B250,其他范围从第 1 行开始。

这是一个替代数组公式(因为我不知道如何解决您的问题!)它更长,但可以完成工作。它假设结果从 I3 开始,并根据需要复制公式。

=IF(ROWS(I$3:I3)<=COUNTIF($A$1:$A$10,$G$4),INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10=$G$4,ROW($A$1:$A$10)-ROW($A$1)+1),ROWS(I$3:I3))),"")

【讨论】:

  • 感谢您的回复。我尝试将其粘贴到 I3 并复制下来。我在结果的原始发布中附加了第二个屏幕截图。当原始数据(列 A 和 B 被隐藏)时,这会起作用吗?是否可以只将公式放在一个单元格中并返回多个值,还是必须将其复制下来?
  • 我不认为没有一些 VBA 可以将结果放在单个单元格中。
  • 它们可以在多个单元格中,但我只是想避免将公式放在每个单元格中。
  • 放到I3里面,记得用Ctrl、Shift、Enter,然后往下复制就好了。
  • 这就是我忘记做的事情。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2019-04-10
  • 2020-10-23
  • 2012-07-08
  • 1970-01-01
  • 2022-01-15
  • 2016-09-30
  • 2019-06-22
  • 1970-01-01
相关资源
最近更新 更多