使用 MATCH 查找单元格区域

使用 MATCH 查找单元格区域

好的,我知道我可以用 VBA 来做到这一点,但我感兴趣的是如果没有 VBA 是否也能做到这一点......

假设我有一张这样的表格,上面有一些代码:

Page   |   Ticker
----------------------
1      |   UKX index
1      |   SPX index
2      |   usgg10yr index
3      |   cesiusd index
3      |   cesijpy index
3      |   gukgin10 index
4      |   GSPG10YR  Index

在单独的工作表上,我有一个页码,比如说 1。我想从上面的表格中获取与工作表页码相对应的所有股票代码。因此,基本上过滤表格,但将结果放在另一张工作表中,并保持原始表格不变。

显然,当页码仅出现一次时,vlookup/index-match 可以做到这一点,但我需要它能够为给定的页码返回多个代码(例如,第 1 页返回 2 个代码,第 2 页返回 1 个代码,第 3 页返回 3 个代码等)

编辑:为了清楚起见,我将有如下所示的辅助工作表:

Lookup Value: 1

Tickers:
UKX index
SPX index

因此,对于上述示例,如果我仅使用 vlookup/index-match,它只会给我“UKX 索引”,因为它是列表中的第一个。我想要一个返回所有匹配项的方法。

答案1

我同意上述所有评论,但只需使用数组公式即可实现这一点,前提是表格按页面排序。下面的公式可以做到这一点:

=OFFSET(Table,MATCH(Page,PageList,0)-1,1,COUNTIF(PageList,Page),1)

在哪里:

  • Table是您示例中的整个表格。
  • Page是需要过滤的页面。
  • PageList只是 的第一列Table

答案2

如果页面位于 A2:A100,而股票行情位于 B2:B100,那么对于 D2 中的特定页面,您可以在 D3 中使用此“数组公式”

=IFERROR(INDEX(B$2:B$100,SMALL(IF(A$2:A$100=D2,ROW(A$2:A$100)-ROW(A$2)+1),ROWS(D$3:D3))),"")

按 CTRL+SHIFT+ENTER 确认并复制。当您用完匹配项时,您将得到空白

对于上述内容,为了简单起见,我假设所有内容都在一张表上,但可以使用相同的公式引用另一张表上的数据,在适当的地方添加表名称。不需要按任何特定顺序排列数据

相关内容