【问题标题】:How can I use REGEXMATCH and SPLIT in a filter in Google Sheets?如何在 Google 表格的过滤器中使用 REGEXMATCH 和 SPLIT?
【发布时间】:2021-09-06 21:01:06
【问题描述】:

我有两个数据集:

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

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

目标

我希望能够使用来自数据集 1 的数据来丰富数据集 2(列 F 和 G),但是,我无法完成这项工作。我试过使用=FILTER(A3:A7, REGEXMATCH(TEXT(E3, "0"), TEXT(ARRAYFORMULA(SPLIT(A3:A7, ",")), "0"))),但这给了我以下错误:“过滤器范围必须是单行或单列。”。我知道这是因为 SPLIT 函数而发生的,但我不知道该怎么做。

工作表可以在here找到。

非常感谢任何帮助。

【问题讨论】:

    标签: google-sheets spreadsheet array-formulas


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 完美@Erik Tyler。非常感谢??
    【解决方案2】:

    试一试-

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

    【讨论】:

    • 非常感谢@Harun24HR 的帮助。我可能应该提到另一件事,那就是,虽然在该表中,数据集 1 仅限于第 3 到 7 行,但在我的真实数据集 1 中,该范围不断增加。我尝试将您的公式重写为=FILTER($B$3:$B,ArrayFormula(MMULT(--(SPLIT($A$3:$A,", ")=E3),SEQUENCE(Columns(ArrayFormula(SPLIT($A$3:$A,", "))))))),但最终得到错误“过滤器的范围大小不匹配。预期的行数:520,列数:1。实际行数:1,列数:1。”。你知道为什么吗?
    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多