如果我有一系列值,我如何提取包含特定单词的所有值?
例如:
还有什么比
更好的=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解决方案。
答案 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 输入。
说明:
index(<arr>, <nbr>)
将获取我们找到的行的值; search(<string>, <arr>)
将找到数组中匹配的所有值,并且是数组公式的原因; if
函数将返回行号,如果存在匹配且未设置默认行号,在这种情况下最后一个+ 1;和small(<arr>, <n-th>)
函数现在将返回第n个最小的行号,在这种情况下,单元格必须在第2行,否则-1
需要更改。由VBA发起的非VBA Pivots:
我发现数据透视表在性能方面带来了很大的改进:
您可以使用内置的包含或搜索功能
或在Worksheet
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