用于跨列搜索字符串和过滤结果的 Excel 公式

问题描述 投票:0回答:1

我正在尝试编写一个 Excel 公式,该公式允许我过滤文档中所有列和工作表的搜索结果。

例如,假设我的 Excel 文件有两张表(Sheet1Sheet2),其中包含以下数据:

表1

A       B       C
Col1    Col2    Col3
foo     1       NA
bar     2       y
baz     3       bar
foo     4       z
bar     5       NA
baz     6       foo

表2

A       B       C
Col1    Col2    Col3
foo     7       bar
bar     8       bar
baz     9       bar
foo     10      z
bar     11      y
baz     12      NA

我可以写出公式:

=FILTER('Sheet1'!A:C;ISNUMBER(SEARCH("foo";'Sheet1'!A)))

将返回:

foo 1   NA
foo 4   z

但是,我找不到一种方法来过滤结果并考虑所有列和工作表:

foo     1       NA
foo     4       z
baz     6       foo
foo     7       bar
foo     10      z
excel excel-formula
1个回答
0
投票

您肯定需要

VSTACK()
MMULT()
来完成所需的输出:


=LET(
     _DataFromBothSheets, VSTACK(Sheet1:Sheet2!A2:C7),
     _Include, MMULT(1-ISERR(SEARCH("foo",_DataFromBothSheets)),{1;1;1}),
     FILTER(_DataFromBothSheets,_Include,""))

  • 使用
    LET()
    函数有助于定义变量并更易于阅读。
  • 使用
    VSTACK()
    函数,我们将两张表中的数据附加到一张表中。
  • 使用
    ISNUMBER()
    1-ISERR()
    执行相同操作,可返回
    TRUE
    表示匹配值,并返回
    FALSE
    表示错误值,因为
    SEARCH()
    函数会返回文本开头的位置。
  • 使用
    MMULT()
    返回两个数组的矩阵乘积,其中一个使用上面的方法返回,并且
    {1;1;1}
  • 最后,上面是 FILTER() 函数的
    include
    参数,放置后会给出所需的输出。

© www.soinside.com 2019 - 2024. All rights reserved.