excel - 获取范围内包含 "keyword"的所有值的列表(不包含空格)

标签 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)),"")

我更喜欢公式而不是 VBA,但也可以随意发布 VBA 解决方案。

最佳答案

我把我学到的技巧在这里会有所帮助,没有 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 输入。

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

  • 由 VBA 发起的非 VBA 数据透视:

    我发现数据透视表带来了很大的性能改进:
  • 像往常一样添加您的 Pivot,但放置 D1 的位置。
  • 您可以使用内置的包含或搜索功能

    enter image description here
  • 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
    
  • 关于excel - 获取范围内包含 "keyword"的所有值的列表(不包含空格),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239173/

    相关文章:

    python - 从具有不同信息的多个文本文件中读取值

    excel - 如何找到同一列中每个重复项的最后一行索引?

    excel - 按日期计算的每日动态平均订单数

    excel - 对于同一组值,如何从 Excel 的不同列中仅提取一个值?

    excel - Excel 中范围内的 DATEDIF

    java - 计算 t 倒数

    excel - vba:具有命名目的地的复制表

    excel - 在编写qt activex excel读/写代码时防止未安装excel时应用程序崩溃

    excel - 如何在外部工作表上使用带有月份和年份的 SUMIF 以及文本条件

    excel - 如果 (Aν = Bν+1) 则改变单元格颜色