如果我有一系列值,如何提取包含特定单词的所有值?
例如:
那有什么更好的吗
=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 数据透视:
我发现数据透视表带来了很大的性能改进:
Worksheet
上使用 VBAPrivate 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/