You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets中按Public Team分组玩家的公式/脚本实现需求

Google Sheets 玩家按团队分组解决方案

公式实现

1. 提取唯一团队列表

在新工作表的A2单元格输入公式,自动获取所有不重复的团队名称(假设原数据在「原数据」工作表,B列是团队列):

=UNIQUE(FILTER('原数据'!B:B, '原数据'!B:B<>""))

2. 提取对应团队的玩家

在B2单元格输入公式,然后向右、向下拖拽填充,就能拿到每个团队的第1、2、3...个玩家:

=INDEX(FILTER('原数据'!A:A, '原数据'!B:B=$A2), COLUMN()-1)
  • 原理:先筛选出当前团队的所有玩家,再按列号提取对应位置的玩家(COLUMN()-1是因为B列对应第1个玩家)。

要自动生成「Player 1」这类表头,在B1单元格输入:

="Player "&COLUMN()-1

向右拉到需要的列数即可。

脚本实现(适合大数据量)

如果数据量较大导致公式卡顿,用脚本批量处理更高效:

  1. 打开表格,点击「扩展程序」→「Apps脚本」;
  2. 替换代码里的工作表名称,粘贴后保存运行:
function groupPlayersByTeam() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName("原数据"); // 改成你的原数据工作表名
  const targetSheet = ss.getSheetByName("分组结果"); // 改成你要存结果的工作表名
  
  // 读取原数据(跳过表头)
  const data = sourceSheet.getDataRange().getValues().slice(1);
  const teamMap = new Map();
  
  // 按团队分组玩家
  data.forEach(row => {
    const player = row[0].trim();
    const team = row[1].trim();
    if (!player || !team) return;
    if (!teamMap.has(team)) teamMap.set(team, []);
    teamMap.get(team).push(player);
  });
  
  // 准备输出格式
  const output = [["Team", "Player 1", "Player 2", "Player 3", "Player 4", "Player 5"]];
  teamMap.forEach((players, team) => {
    const row = [team];
    // 填充玩家到列里,不够的留空
    for (let i = 0; i < 5; i++) row.push(players[i] || "");
    output.push(row);
  });
  
  // 写入结果
  targetSheet.clear();
  targetSheet.getRange(1, 1, output.length, output[0].length).setValues(output);
}
  1. 首次运行需要授权,完成后就能看到分组好的结果。

内容的提问来源于stack exchange,提问作者ash schnoor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 00:20:30