使用 Google 表格中的查询进行动态列选择

Posted

技术标签:

【中文标题】使用 Google 表格中的查询进行动态列选择【英文标题】:Dynamic column selection using Query in Google Sheets 【发布时间】:2021-10-15 08:33:57 【问题描述】:

我有一个电子表格,旨在按地点计算工作时间并生成发票金额。我已经找到了一种(相当脆弱的)方法来使用SUMPRODUCT 在资源的排序列表上实现这一目标。但是,这显然无法扩展。

我突然想到,我可以使用 QUERY 函数和 SUMPRODUCT 并让自己摆脱在数据集上强制构建人工结构的需要。但是,由于需要在电子表格的每一列中复制此公式,并且由于列选择器是 SELECT 语句字符串的一部分,因此当我在行中的每个单元格中复制公式时,它不会动态调整。我尝试使用COLUMN() 构建公式来动态构建SELECT 语句,但不断出现解析错误。

这是表格:https://docs.google.com/spreadsheets/d/1EK2UcgsBqzb3Pfky8SALlTSEdeYvviv3QeyEPDu2mF0/edit?usp=sharing

谁能帮帮我?

【问题讨论】:

把你的图片放进去![图片描述][图片链接]而不是一个实际的链接,你只需要在链接前添加一个感叹号就可以了。 【参考方案1】:

尝试:

=INDEX(QUERY(QUERY(SPLIT(FLATTEN(
 IF(C3:K10="",,B3:B10&"×"&C3:K10*L3:L10&"×"&C2:K2)), "×"), 
 "select Col1,sum(Col2) 
  where Col2 is not null
  group by Col1
  pivot Col3"),
 "offset 1", ))

【讨论】:

我试图理解这个公式,但我对嵌套函数有点迷失了。你能解释一下逻辑吗? @MarceloGuerra 当然,如果范围 C3:K10 为空,则不执行任何操作,否则将范围与 L 列相乘,并通过唯一字符 × 附加 B 列和带有日期的行。我们得到多维数组,因此我们将其全部展平为一列,并在每个唯一字符 × 上将其拆分为 3 列。然后我们使用 QUERY 将值按 B 列分组,并按行与日期进行旋转。然后我们使用 2nd QUERY 删除内部 QUERY 的标题行。因为我们处理我们使用 INDEX 的数组(只是因为它比使用 ARRAYFORMULA 短)

以上是关于使用 Google 表格中的查询进行动态列选择的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google 电子表格在 Google 查询语言 (GQL) 中按名称而不是字母选择列?

Google表格的动态数据范围包括查询功能

Google表格中的动态货币换算

Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格

获取 Google 表格列中的最后一个非空单元格

比较数字时,Google 表格中的查询功能没有结果,但数据集中存在数据