【问题标题】:Google Sheets Reverse Transpose谷歌表格反向转置
【发布时间】:2016-05-06 05:45:18
【问题描述】:

我从另一个用户那里看到了这个解决方案,并得到了回答(由 Opal)。我正在尝试稍微修改结果,但我遇到了空白值。我有这张原始数据表(例如)

idn |身份证号 | d1 | d2 | d3 ...
id1 | /name1/ | 23 | 13 | 56
id2 | /name2/ | 67 | 45 |
id3 | /名称3/ | 43 |
id4 | /name4/ | 78 | 34 | 45
. .

我想将此列表转换为以下表格以上传到数据库,结果应如下所示:

id1 | /name1/ |日期1 | 23
id1 | /name1/ |日期2 | 13
id1 | /name1/ |日期3 | 56
id2 | /name2/ |日期1 | 67
id2 | /name2/ |日期2 | 45
id3 | /名称3/ |日期1 | 43
id4 | /name4/ |日期1 | 78
id4 | /name4/ |日期2 | 34
id4 | /name4/ |日期3 | 45
.
.

我该怎么做 - 我目前的解决方案如下,但不适用于空格。我看到了适用于空格的 Opal 解决方案,但无法弄清楚如何创建日期列(结果中的第 3 列)

ArrayFormula({transpose(split(query(rept(A2:A&" ", COUNTA(C1:1)),,50000)," ")),transpose(split(query(rept(B2:B&" " , COUNTA(C1:1)),,50000)," ")),TRANSPOSE(SPLIT(JOIN(" ", ARRAYFORMULA(REPT(join(" ",(query(C1:1))))&" ", COUNTA (A2:A)))), " ")),transpose(split(join(" ",query(transpose(C2:M),,50000)), " "))})

有什么建议吗?这是一个大型数据集,我正在达到所有字符串函数的限制,rept 限制为 32,000,连接限制为 50,000 谢谢。

【问题讨论】:

  • 能否添加指向您所指的“蛋白石解决方案”的链接?
  • 我遇到的另一个问题是连接函数中的 50,000 个字符的限制。
  • 这是一个大型数据集,我正在达到所有字符串函数的限制,rept 限制为 32,000,join 限制为 50,000。
  • 您可以单击问题下方的“编辑”链接,然后将附加信息直接添加到问题中。这样一来,阅读它的人就会立即看到所有信息。

标签: google-sheets


【解决方案1】:

这是一个很好的公式。我敢肯定你是 请注意,如果空格为 0,则公式有效。 我知道这不是一个完美的解决方案,但它确实有效。 在另一张纸上使用:

=ArrayFormula({transpose(split(query(rept(Sheet1!A2:A&" ", COUNTA(Sheet1!C1:1)),,50000)," ")),transpose(split(query(rept(Sheet1!B2:B&" ", COUNTA(Sheet1!C1:1)),,50000)," ")),TRANSPOSE(SPLIT(JOIN(" ", ARRAYFORMULA(REPT(join(" ",(query(Sheet1!C1:1)))&" ", COUNTA(Sheet1!A2:A)))), " ")),transpose(split(join(" ",query(transpose(Sheet1!C2:E5+0),,50000)), " "))})

C2:E5+0 将空格替换为 0 的公式。它不影响原始数据。 这将返回格式正确的数据,但使用 不需要的 0 行。在另一张纸上,清理 不需要的行:

=query(Sheet2!A:D,"select * where D != 0")

这会以正确的格式返回您想要的数据。

【讨论】:

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