获取范围内包含“关键字”的所有值的列表(不含空格)
如果我有一个值范围,我如何提取所有包含特定单词的值?
例如:
有什么更好的呢
=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 。
说明:
-
index(<arr>, <nbr>)
将得到我们find的行的值; -
search(<string>, <arr>)
将查找数组中匹配的所有值,这是数组公式的原因; -
if
匹配存在,if
函数将返回行号,如果没有设置默认行号,在这种情况下是最后一个+ 1; 和 - 最重要的是
small(<arr>, <n-th>)
函数现在将返回第n个最小的行号,在这种情况下,单元必须在第2行,否则需要改变-1
。
由VBA发起的非VBA枢轴:
我发现数据透视表在性能上有了很大的提高:
- 正常添加你的枢轴,但把D1的位置。
-
您可以使用内置的包含或searchfunction
-
或者在
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