【问题标题】:Unpivot repeating groups of columns into rows将重复的列组反转为行
【发布时间】:2020-05-15 06:50:51
【问题描述】:

我有一张包含这种格式数据的表格

但我希望它看起来像这样

我尝试使用this answer 提供的代码转置数据,但结果不是我想要的,我似乎无法理解它。我觉得我遗漏了一些明显的东西,但是使用分组列的需要让我有点吃惊。我习惯了 Python Pandas,我的 Excel/Sheets 技能严重缺乏。

我在this demo spreadsheet 中提供了所有电子表格和链接函数的使用示例。

非常感谢您的帮助!

【问题讨论】:

  • 我应该澄清一下。我正在尝试专门在 Google 表格中执行此操作,我已用 Excel 对其进行标记,以防流程相同并且具有 Excel 专业知识的人可以参与进来。
  • 您是否考虑过使用 Apps 脚本来执行此操作?

标签: google-sheets


【解决方案1】:

您的工作表上有一个名为 MK.Help 的新选项卡。您将在单元格 A2 中找到此公式。

=ARRAYFORMULA(QUERY(SPLIT(FLATTEN(current_data!A3:A&"|"&current_data!B3:B&"|"&current_data!C3:C&"|"&FILTER(current_data!D3:L,REGEXMATCH(current_data!D2:L2,"size"))&"|"&FILTER(current_data!D3:L,REGEXMATCH(current_data!D2:L2,"colour"))&"|"&FILTER(current_data!D3:L,REGEXMATCH(current_data!D2:L2,"quantity"))),"|",0,0),"where Col4<>''"))

警告: 我应该提到 FLATTEN() 是我最近才发现的一个未记录的函数。我相信它打算在工作表编程的后端保持“隐藏”,但如果我所做的是你所追求的,那么真的没有更有效的方法来做到这一点。如果您对使用未记录的函数感到不舒服,请告诉我,我可以尝试为您构建不同类型的工作。我与 Google 的一位工程师交谈过,并被告知它不会去任何地方,但也没有计划将其“公开”。

【讨论】:

  • 感谢这个马特。这是一个地狱般的公式,但它比我使用的脚本更透明,所以我喜欢它。我将不得不挑选它以确保我理解每个 sfage
【解决方案2】:

我意识到我在链接答案中滥用了脚本。我没有标题。一旦我提供标题对列进行分组,unpivot 脚本就可以完美运行。我将留下示例表供人们查看答案。

【讨论】:

  • 如果您有兴趣,我可以用一个相当简单的单个数组公式来做到这一点?如果您的脚本很好,那就这样吧:) 但如果您对如何使用公式感兴趣,可以将工作表更改为可编辑,我可以在新选项卡上进行演示。
  • 嗨@MattKing。这将非常有帮助,如果有更简单的本机解决方案,我希望看到它。我想我现在已经使文档可编辑了。谢谢!
  • 没问题!肯定只有3个“产品”吗?您希望它计划无限数量的产品吗?
  • 3 仅用于示例。它更像是一个不确定的数字。谢谢!
【解决方案3】:

你也可以使用这个查询公式:

=QUERY({A2:F5;A3:C5,G3:I5;A3:C5,J3:L5},"where Col4&lt;&gt;'' order by Col1")

(不需要脚本)

使用的功能:

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2020-02-16
    • 2022-01-20
    • 2015-08-06
    • 2021-03-02
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多