【问题标题】:Excel - VLOOKUP to return each result in an array, not just the firstExcel - VLOOKUP 在数组中返回每个结果,而不仅仅是第一个
【发布时间】:2017-09-01 05:04:07
【问题描述】:

我目前在两个工作簿之间工作。

工作簿A中,我有以下数据。

       A  ...   D        E        F  ...   N
1.| ID     |  Name  |  Desc  |  Prod  | Country|
2.| 12345  |   Apple|   Fruit|      10|      US|
3.| 12346  |  Celery|     Veg|     150|      US|
4.| 12347  |    Mint|    Herb|      25|      FR|

我一直在 Workbook B 中使用来自 AHC 的以下公式,目的是执行一个 VLOOKUP 来获取所有 ID,但前提是 >国家/地区 =“美国”。

=VLOOKUP("US", CHOOSE({2,1},Workbook A.xlsx!Table1[ID], Workbook A.xlsx!Table1[Country]), 2, FALSE)

这个公式很好用,但是,我的问题来了,因为这个公式只会返回数组中的第一个实例。例如,如果我在 Workbook B, Col A 中包含此公式,它将如下所示:

       A  
1.|ID of US| 
2.| 12345  | 
3.| 12345  | 
4.| 12345  |
5.| 12345  |
6.| 12345  |
7.| 12345  |

如何使这个公式起作用,以便它返回与“US”匹配的每个 ID,而不仅仅是第一次出现的匹配项?

【问题讨论】:

  • 快速提问,您的工作簿 B 的布局是什么?您是否在一列中列出了所有 ID 并在下一列中列出了结果?或者您只是想要一个公式向下拖动以显示与条件(Country = "US") 匹配的任何 ID?此外,是否可以使用工作簿 A 中的重复 ID,而您想在工作簿 B 上显示两次?

标签: arrays excel vlookup


【解决方案1】:

B2 中输入这个公式:
您可能需要调整范围的行(我一直到 100)。

={ISERROR(INDEX(D$2:D$100,SMALL(IF(N$2:N$100=$A2,ROW(D1)),ROW(N1))),"")}

注意:
步骤 1) 在单元格 B2 不带 {}
中插入公式only 步骤 2) 插入公式后,标记整个公式,然后按 Ctrl + Shift + Enter 这样公式就会得到 { }
第 3 步)将其向下拖动到需要的位置以获取列表。

【讨论】:

  • 我认为这个解决方案行不通。当我使用公式时,它只会将“TRUE”返回到 B2。这不能解决我的问题。
猜你喜欢
  • 2015-08-15
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多