【问题标题】:Google Sheets query with special transpose带有特殊转置的 Google 表格查询
【发布时间】:2021-02-11 09:18:59
【问题描述】:

我正在努力编写一个看起来比预期更复杂的查询,这里是要处理的数据示例

CW6 CW7 CW8 CW9
A B C A
B D E B

这是最后预期的结果:

Item CW
A "CW6 CW9"
B "CW6 CW7 CW9"
C "CW8"
D "CW7"
E "CW8"

知道如何实现这一目标吗? 我在许多步骤中尝试过的:

=transpose(query(<data>,"Select *",1)) 转置我的数据

然后我用了

=transpose(
     query(
        transpose(<data transposed>),,9^9
     )
)

加入所有列

然后我选择我想要检索列标题(CWxx)的所有唯一值

=query(
     unique(flatten(<Data>)),
     "Select Col1 where Col1 is not null"
)

最后,我将转置的数据加入一个字符串(即 1 列)中:

=JOIN(" ", QUERY(< data transposed and joined>,"SELECT Col2 WHERE Col1 contains '"&A1&"'",0))

最后我得到了想要的数组,但我必须在每一行复制最后一个连接公式,因为我的值是动态的,所以我不想这样做

知道如何实现这一点(或避免所有这些步骤的更简单方法)吗?

【问题讨论】:

  • 这似乎是通过谷歌脚本完成的任务,你会考虑这样做吗?这是一个非常简单的例子:developers.google.com/apps-script/guides/sheets/functions
  • 我想避免使用脚本(并在单元格更改时进行此计算);公式可以完成这项工作吗?
  • 您能分享一份您使用的工作表的公开副本吗?

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


【解决方案1】:

尝试:

=ARRAYFORMULA({QUERY(SORT(UNIQUE(FLATTEN(A2:D))), 
 "where Col1 is not null"), TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×")), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))})

或:

=ARRAYFORMULA({QUERY(SORT(UNIQUE(FLATTEN(A2:D))), 
 "where Col1 is not null"), """"&TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×")), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))&""""})


更新:

=ARRAYFORMULA({QUERY(TO_TEXT(SORT(UNIQUE(FLATTEN(A2:D)))), 
 "where Col1 is not null", 0), TRIM(FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(TO_TEXT(
 IFERROR(SPLIT(FLATTEN(IF(A2:D="",,A2:D&"×"&A1:D1&"×"&A1:D1)), "×"))), 
 "select max(Col3) where Col2 is not null group by Col1 pivot Col2"), 
 "offset 1", 0)),,9^9)))})

【讨论】:

  • 非常感谢这个提议。我确实花了一些时间来理解它!当字母更改为数字时,我获得了一种特定的行为(单元格的类型可以保持为纯文本)。在您的示例中,替换 A=10, B=20, C=30 ... 在单元格 B2 中将 B 设置为 200 而不是 20。看到 200 CW8 ...知道吗?
  • 糟糕,现在运行良好。非常感谢,你拯救了我的一天!
猜你喜欢
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
相关资源
最近更新 更多