【问题标题】:Google sheet, select columns within a named range谷歌工作表,选择命名范围内的列
【发布时间】:2021-05-07 13:48:59
【问题描述】:

我正在尝试在谷歌表格上的命名范围内选择一个数据范围,但搜索后我仍然不知道该怎么做。

在这种情况下,我想计算一个俱乐部在一个比赛周内出现的时间。

在这里,我可以为我拥有的所有游戏周桌做这件事,没有问题。

Total

=QUERY({B:C;D:E;F:G;H:I;J:K}; "SELECT Col1, SUM(Col2) WHERE Col1 <> '' AND Col1 <> 'GK' AND Col1 <> 'DEF' AND Col1 <> 'MID' AND Col1 <> 'FW' AND Col1 <> 'EXTRA' AND Col1 <> 'Club' AND Col1 <> 'count' AND Col1 MATCHES '^.{0,5}$' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

但我想为每个游戏周表做同样的事情。到目前为止我有这个

Gameweek 1

=QUERY({(B6:B15):(C6:C15);(D6:D15):(E6:E15);(F6:F15):(G6:G15);(H6:H15):(I6:I15);(J6:J15):(K6:K15)}; "SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

但它不是很有用,因为我必须为每个下一个表更改每个范围。

所以我尝试将“Gameweek 1”表设置为命名范围gw1_clubcount,并且只选择与总数类似的适当列,这样我只需为每个游戏周更改它,但显然它不起作用但这就是我想要达到的目标。

Gameweek 1 with named range

=QUERY(gw1_clubcount {B:C;D:E;F:G;H:I;J:K}; "SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

我找到了 INDEX 函数,您可以在其中选择命名范围的所需行和列。这将在下面给出类似的内容,但这不是您使用它的方式。

=QUERY({INDEX(gw1_clubcount,,1):INDEX(gw1_clubcount,,2);INDEX(gw1_clubcount,,3):INDEX(gw1_clubcount,,4);INDEX(gw1_clubcount,,5):INDEX(gw1_clubcount,,6);INDEX(gw1_clubcount,,7):INDEX(gw1_clubcount,,8);INDEX(gw1_clubcount,,9):INDEX(gw1_clubcount,,10)} ; "SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

我对床单不是很有经验,非常感谢您的帮助!

【问题讨论】:

标签: google-sheets google-sheets-formula


【解决方案1】:

这里我创建了一个需要自定义函数的解决方案:

编写自定义函数:

  1. 在 Google 表格中创建或打开电子表格。
  2. 选择菜单项工具 > 脚本编辑器。
  3. 删除脚本编辑器中的所有代码。
  4. 对于这个问题,只需将下面的代码(堆栈函数)复制并粘贴到您的脚本编辑器中即可。
  5. 点击顶部的保存保存。

使用自定义函数:

  1. 单击要使用该功能的单元格。
  2. 键入等号 (=),后跟函数名称和任何输入值(例如 =DOUBLE(A1)),然后按 Enter。
  3. 单元格将暂时显示正在加载...,然后返回结果。

代码:

function stack(arr) {
  var flatArr = arr.flat();
  var filtered = flatArr.filter(function (el) {return el != "";});
  const newArr = [];
  while(filtered.length) newArr.push(filtered.splice(0,2));
  return(newArr);
}

命名范围:

使用示例:

GAMEWEEK1:

=QUERY(stack(FLATTEN(gw1_clubcount)), "SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

GAMEWEEK2:

=QUERY(stack(FLATTEN(gw2_clubcount)), "SELECT Col1, SUM(Col2) WHERE Col1 <> '' GROUP BY Col1 ORDER BY SUM(Col2) DESC LABEL Col1 'Club', SUM(Col2) 'count'")

参考资料:

【讨论】:

  • 这正是我想要的。谢谢你的简单解释!我会阅读更多关于这方面的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多