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

时间:2013-04-26 14:42:00

标签: excel excel-formula

如果我有一系列值,我如何提取包含特定单词的所有值?

例如:

enter image description here

还有什么比

更好的
=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)),"")

我更喜欢VTA上的Formulas,但也可以随意发布VBA解决方案。

1 个答案:

答案 0 :(得分:1)

我知道我会在这里获得帮助,并且没有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 + Enter 输入。

说明:

  1. index(<arr>, <nbr>)将获取我们找到的行的值;
  2. search(<string>, <arr>)将找到数组中匹配的所有值,并且是数组公式的原因;
  3. if函数将返回行号,如果存在匹配且未设置默认行号,在这种情况下最后一个+ 1;和
  4. 最重要的是,small(<arr>, <n-th>)函数现在将返回第n个最小的行号,在这种情况下,单元格必须在第2行,否则-1需要更改。
  5. 由VBA发起的非VBA Pivots:

    我发现数据透视表在性能方面带来了很大的改进:

    1. 正常添加您的Pivot,但请输入D1的位置。
    2. 您可以使用内置的包含搜索功能

      enter image description here

    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