微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Google 表格的过滤器中使用 REGEXMATCH 和 SPLIT?

如何解决如何在 Google 表格的过滤器中使用 REGEXMATCH 和 SPLIT?

我有两个数据集:

  • 数据集 1 是来自我们销售团队的数据
  • 数据集 2 是来自我们财务团队的数据

这两个集合之间的共同元素是发票 ID 列(数据集 1 中的列 A 和数据集 2 中的列 E)。但是,在数据集 1 中,此数据存储为数组,而在数据集 2 中,数组的每个值都显示在自己的行中。

目标

我希望能够使用数据集 1 中的数据来丰富数据集 2(cols F & G),但是,我无法完成这项工作。我试过使用 =FILTER(A3:A7,REGEXMATCH(TEXT(E3,"0"),TEXT(ARRAYFORMULA(SPLIT(A3:A7,",")),"0"))),但这给了我以下错误:“过滤器范围必须是单行或单列。”。我知道发生这种情况的原因是 SPLIT 函数,但我不知道如何处理。

该工作表可以在 here 中找到。

非常感谢任何帮助。

解决方法

我在您的示例电子表格中添加了一个新工作表(“Erik 帮助”)。以下单个公式将生成 F3:G 的所有结果 ...

=ArrayFormula(IF(E3:E="",VLOOKUP("*"&"%"&E3:E&"%"&"*",{REGEXREPLACE("%"&A3:A&"%","[,\s]","%"),B3:C},{2,3},FALSE)))

% 符号仅用于将 Col A 和 Col E 中的每个元素“填充”为独特的东西,以便将搜索词 1 与例如 14(即,VLOOKUP 将搜索 %1% 而不仅仅是 1,在 %14% 等中不会找到它。) % 符号没有特殊含义;它可能是我们确定通常不会出现在 Col A 或 Col E 中的任何独特角色。

REGEXREPLACE 用这个特殊的 % 字符替换所有逗号和空格,以及前后位置。因此,此时的工作表将像 1,14 这样的 Col-A 列表视为 %1%%14%

* 是一个通配符,附加在搜索词的前后,这将允许在包含列表的 Col A 元素中找到它。

返回虚拟数组的第二列和第三列(例如,{2,3})的结果。

,

尝试一下-

=FILTER($B$3:$B$7,ArrayFormula(MMULT(--(SPLIT($A$3:$A$7,",")=E3),SEQUENCE(Columns(ArrayFormula(SPLIT($A$3:$A$7,")))))))

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。