获取范围内包含“关键字”的所有值的列表(不含空格)

如果我有一个值范围,我如何提取所有包含特定单词的值?

例如:

在这里输入图像描述

有什么更好的呢

=IFERROR(INDEX(INDIRECT("A"&MATCH(D2,$A$2:$A$21,0)+2&":A21"), MATCH("*"&$C$1&"*",INDIRECT("A"&MATCH(D2,$A$2:$A$21,0)+2&":A21"),0)),"") 

我宁愿使用VBA的公式,但也可以随意发布VBA解决scheme。

我诡计我学会了在这里帮助, 没有VBA是必需的。 把它放在D2中,然后向下拖动:

 {=INDEX(A:A, SMALL(IF(ISNUMBER(SEARCH("*"&$C$1&"*",$A$2:$A$11)), ROW($A$2:$A$11), MAX(ROW($A$2:$A$11))+1) ,ROW()-1))} 

注意:这是一个数组公式,需要用Control + Shift + Enterinput

说明:

  1. index(<arr>, <nbr>)将得到我们find的行的值;
  2. search(<string>, <arr>)将查找数组中匹配的所有值,这是数组公式的原因;
  3. if匹配存在, if函数将返回行号,如果没有设置默认行号,在这种情况下是最后一个+ 1; 和
  4. 最重要的是small(<arr>, <n-th>)函数现在将返回第n个最小的行号,在这种情况下,单元必须在第2行,否则需要改变-1

由VBA发起的非VBA枢轴:

我发现数据透视表在性能上有了很大的提高:

  1. 正常添加你的枢轴,但把D1的位置。
  2. 您可以使用内置的包含searchfunction

    在这里输入图像说明

  3. 或者Worksheet上使用VBA

     Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$1" Then With Me.PivotTables("PivotTable2").PivotFields("name") .ClearAllFilters .PivotFilters.Add Type:=xlCaptionContains, Value1:=Target End With End If End Sub