Excel读取整个列 – 在其他列中提取结果

我需要一个Excel的公式,可以帮助我做到以下几点。 我想在一列(B)中读一个“字母”,然后“提取”它旁边的列(A)中的值。 下面的例子:在下面的例子的“结果”列中,我的公式读取列B的所有“g”,然后写入所有相应的值。 我一直没有能够使用VLOOKUP,因为总是给我发现第一个“g”的第一个值。 有没有办法在这里使用VLOOKUP。 我目前的解决scheme是下面的公式

{=INDEX($A:$B,SMALL(IF($B:$B=J$5,ROW($B:$B)),ROW(1:1)),1)} 

(J $ 5,就是我在那里有字母“g”的单元格,在B列中查找的项目)。 虽然这个公式有效,但有两个缺点:1)一旦发现没有更多的“g”返回是“#NUM!”,我不喜欢,如果它找不到更多, 2)这个公式有点慢,不是什么大不了的,但是我以前从来没有这样在我的电脑上。 您的意见非常感谢。


  Column A Column B Result (letter g(J$5)) 23 f 27 27 g 87 34 h 54 56 h 88 87 g 4 35 f 8 f 54 g 468 h 88 g 90 f 4 g 

数组公式在大数据集上总是很慢。 考虑使用高级filter而不是数组公式。 设置看起来像这样:

在这里输入图像说明

您可以在这里find高级filter的介绍 : Excel高级filter简介

数组公式的版本为FYI(为简单起见,您可能想命名范围$ C $ 3:$ C $ 18):

(点击图片的公式)

= IFERROR(INDIRECT(ADDRESS(SMALL(IF($ C $ 3:$ C $ 18 = $ F $ 2,ROW($ C $ 3:$ C $ 18), “”),ROW() – ROW($ F $ 2)), COLUMN($ B $ 2))), “”)