Excel数组仅复制包含字符串的单元格的公式

r3i60tvu  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(108)

我更喜欢使用Excel数组公式(但如果它只能在Excel中完成,那就这样吧),它从包含特定文本的列数组中复制所有单元格。下面的图片显示了我所追求的和我所尝试的。我正在接近(由于类似的,但不同的问题),但不能完全到达我想要的地方。目前,我只得到第一个单元格,而不是所有单元格。在我的实际应用程序中,我正在搜索大约20,000个单元格,并且将有几百个搜索词。我希望大多数搜索条件给我给予约8 - 12细胞与该值。
我使用的公式:

=INDEX($A$4:$A$10,MATCH(FALSE,ISERROR(SEARCH($C$1,$A$4:$A$10)),0))

amrnrhlw

amrnrhlw1#

为了使这项工作有效,我建议有一个单独的单元格保存结果计数(我使用的单元格C2),它具有以下公式:

=COUNTIF(A:A,"*"&C1&"*")

然后在单元格C4中使用这个数组公式(-3只是因为标题行是第3行。如果标题行是行1,则它将是-1):

=IF(ROW(A1)>$C$2,"",INDEX($A$4:$A$21000,SMALL(IF(ISNUMBER(SEARCH($C$1,$A$4:$A$21000)),ROW($A$4:$A$21000)-3),ROW(C1))))

我用A列中的21000行数据进行了测试,每个搜索字符串平均有30个结果,公式被复制到C列的60个单元格中。有了这么多的数据,这需要大约1-2秒来完成重新计算。重新计算时间可能会因工作簿中的其他因素(附加公式、嵌套依赖项、volatile函数的使用等)以及硬件而异。
或者,你可以只使用内置的过滤器功能,但我希望这有帮助。

xvw2m8pv

xvw2m8pv2#

你必须得到ROWS。把这个放进C4炸药箱里,然后抄下来。
=IFERROR(AGGREGATE(15,6, IF(SEARCH($C$1, $A$4:$A$10)>0, ROW($A$4:$A$10)), ROW($C4)-ROW($A$4)+1), "")
数组公式所以使用ctrl-shift-Enter

相关问题