【问题标题】:Tranposing a table google sheet转置表格谷歌表
【发布时间】:2017-05-07 14:45:41
【问题描述】:

在谷歌表格/谷歌脚本/javascript中,. 如何转换我的表格

来自

05/05/2017  Peter   Apple
05/05/2017  John    Banana
05/05/2017  Jake    Apple
05/06/2017  John    Apple
05/06/2017  Jake    Banana
05/06/2017  Peter   Banana

      05/05/2017    05/06/2017
Peter   Apple        Banana
John    Banana       Apple
Jake    Apple        Banana

TIA。

【问题讨论】:

    标签: javascript google-app-engine google-apps-script google-sheets


    【解决方案1】:

    这是我认为的一种方法,附上图片:

    quick google search

    【讨论】:

    • 你回答了这个问题,但我认为这不是 OP 想要做的。
    【解决方案2】:

    您询问的代码不是转置单元格。您需要跟踪:

    1. 唯一的日期列表
    2. 名称的唯一列表
    3. 找到所有的交叉点。

    你还需要解决这个问题:

    • 如果数据对配对有超过 1 个匹配项怎么办:日期名称,即 05/05/2017 中的 Peter 具有 AppleBanana

    尝试分部分解决问题,然后提出一些代码并改进它。

    我建议这些信息作为起点:

    get value in one column in spreadsheet using google apps script

    Unique values in an array

    【讨论】:

      【解决方案3】:
      1: Paste the table in B1 across D6.
      
      2: In A1 enter this formula -> =ArrayFormula(C1:C&B1:B)
      
      3. In F1, enter this -> =TRANSPOSE(unique({B:B}))
      
      4. IN E2, enter this -> =UNIQUE(C:C)
      
      5. In F2, enter this -> =ArrayFormula(iferror(VLOOKUP($E2:$E&F1,$A1:$D,4,0),""))
      

      您可以在 F2 中对下一列中的公式进行分级以获取数据。

      【讨论】:

        【解决方案4】:

        这个问题没有得到充分的解释,所以答案基于这个假设: 对于每个不同的日期和每个不同的名称,源范围恰好包含一个数据行。因此我们不会处理可能的数据聚合。

        下图有助于解释解决方案。

        E4:E6 中的行标题数组由公式=UNIQUE($B$1:$B$6) 填充,因为我们应该避免重复。该公式适用于单元格 E4。 包含日期的列标题数组通过类似的公式计算,在单元格 F3 中添加了额外的转置 =TRANSPOSE(UNIQUE($A$1:$A$6))

        最后,数据单元格 F4:G6 具有相同的逻辑,并且可以通过从单元格 F4 复制来扩展其公式。结果应该在 C 列中找到,使用 A 和 B 列的 2 个键。没有“VLOOKUP-like”函数可以直接做到这一点,所以我们在 VLOOKUP 之前使用过滤。

        关于这些函数的更多信息可以在这里找到:VLOOKUPFILTER

        【讨论】:

          猜你喜欢
          • 2016-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多