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