好的,我知道我可以用 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 确认并复制。当您用完匹配项时,您将得到空白
对于上述内容,为了简单起见,我假设所有内容都在一张表上,但可以使用相同的公式引用另一张表上的数据,在适当的地方添加表名称。不需要按任何特定顺序排列数据