【问题标题】:Google sheets - cross join / cartesian join from two separate columns谷歌表格 - 从两个单独的列交叉连接/笛卡尔连接
【发布时间】:2021-04-22 06:28:10
【问题描述】:

希望有人可以帮助我使用 Google 表格中的笛卡尔积。我在两个单独的列中有数据,并希望在单独的选项卡中创建两列的所有可能组合。第一列是 ID(文本),第二列是日期格式。输出应该是两个单独的列。公式应该是动态的,即当新的 ID 或日期添加到输入列表时,列表应该更新。

我在网上寻找过解决方案,但没有找到有效的解决方案。我精通 Excel,但不太精通 Google Sheet :)

这是一个样本表:https://docs.google.com/spreadsheets/d/150uIg3XH1hxZa8vSxDhcVZVOcSEOp175OPYL4Rc-wWI/edit?usp=sharing

【问题讨论】:

    标签: google-sheets google-sheets-formula cartesian-product cross-join


    【解决方案1】:

    使用这个:

    =ARRAYFORMULA(
      SPLIT(
        FLATTEN(
            FILTER('input 1'!A2:A, 'input 1'!A2:A <> "")
          & ","
          & TRANSPOSE(FILTER('input 2'!A2:A, 'input 2'!A2:A <> ""))
        ),
        ","
      )
    )
    

    在单元格 A3 中,但确保将 B 列重新格式化为 date(从 E 列复制格式):

    【讨论】:

    • 谢谢,这正是我需要的。目前有 10 个 ID ('input'!A2:A11) 和 12 个月 ('input 2'!A2:A13)。你知道是否可以使公式“动态”,这样如果我添加一个新的ID,公式会自动检测并更改为“'input'!A2:A12”?谢谢!
    • @WilliamPontoppidan 用FILTER 修正了一些公式,以支持开放范围,使其动态化。
    【解决方案2】:

    我认为 soMarios 的解决方案在您的情况下更好,但这里有另一种解决方案,只是为了展示不同的方法。通过一些工作,这种方法可以推广到任意数量的列。

    =ARRAYFORMULA(
      {
        VLOOKUP(
          INT(SEQUENCE(COUNTA('input 1'!A2:A) * COUNTA('input 2'!A2:A), 1,) / COUNTA('input 2'!A2:A)) + 1,
          {SEQUENCE(COUNTA('input 1'!A2:A)), FILTER('input 1'!A2:A, 'input 1'!A2:A <> "")},
          2,
        ),
        VLOOKUP(
          MOD(SEQUENCE(COUNTA('input 1'!A2:A) * COUNTA('input 2'!A2:A), 1,), COUNTA('input 2'!A2:A)) + 1,
          {SEQUENCE(COUNTA('input 2'!A2:A)), FILTER('input 2'!A2:A, 'input 2'!A2:A <> "")},
          2,
        )
      }
    )
    
    

    【讨论】:

      【解决方案3】:

      尝试:

      =INDEX(SPLIT(FLATTEN(
       OFFSET('input 1'!A2,,,COUNTA('input 1'!A2:A))&"♠"&TRANSPOSE(
       OFFSET('input 2'!A2,,,COUNTA('input 2'!A2:A)))), "♠"))
      

      并将 B 列格式化为日期

      【讨论】:

        猜你喜欢
        • 2018-05-23
        • 2015-10-16
        • 2014-12-06
        • 2018-11-30
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 2021-10-30
        • 2023-03-23
        相关资源
        最近更新 更多