【问题标题】:Google sheets =QUERY() matching names on two sheetsGoogle 表格 =QUERY() 匹配两张表格上的姓名
【发布时间】:2020-10-16 19:37:43
【问题描述】:

我一直犹豫要不要问,因为这似乎是一个很简单的公式,但我一直很难让它发挥作用。数据从不同的工作簿导入到 sheet1,另一组数据导入到 sheet2。现在,我试图通过将 sheet1 的 E 列与 sheet2 的 D 列(两列都包含名称)匹配并将其输入到同一工作簿的 sheet3 来编译数据。在等待匹配时,我试图仅显示记录所需的相关数据(列 A(日期)、H(数字)、F(数字)、S(文本))。

=QUERY(Sheet1!A:S,"select A, H, F, S where E matches '"&Sheet2!D:D&"'",1)

这将返回所请求列的标题,但不显示任何匹配信息(根据手动计数应该显示 5 行)。我摆弄了不同的公式来包括索引和过滤器,但我似乎无法降低格式以接近复制我目前拥有的内容。我假设问题在于 [其中 E 匹配 '"&Sheet!2D:D&"'"]。这是比较两列的长度而不是列中的值吗?我需要先索引列?

【问题讨论】:

    标签: arrays google-sheets google-sheets-formula google-query-language


    【解决方案1】:

    尝试:

    =QUERY(Sheet1!A:S,
     "select A,H,F,S 
      where E matches '"&TEXTJOIN("|", 1, Sheet2!D:D)&"'", 1)
    

    【讨论】:

    • 你是宝藏。谢谢你!像魅力一样工作=)如果我可以问,“|”是什么在公式中做什么?编辑问(如果你知道这个答案):我的原始函数,公式的结果是什么,为什么它不起作用?
    • |表示正则表达式下的“或”。您可能没有意识到,但是当您在查询中使用“匹配”时,您实际上使用的是正则表达式逻辑
    • 如果没有 textjoin,它将无法工作,因为查询无法将查询范围与数组/范围进行比较
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2021-10-26
    相关资源
    最近更新 更多