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

如何在Google Sheets中合并多年度Athletic.net赛事数据表格?

合并Athletic.net多年度田径赛事数据表格

问题背景

已通过ImportHTML工具成功导入2021、2022、2023三个年度的独立田径赛事表格,但现有表格结构(如下示例)导致同类赛事合并困难,每个表格还包含运动员姓名、年级及成绩数据(示例未展示):

现有导入表格结构示例

2023年赛事2022年赛事2021年赛事
100 meter60 meter100 meter
111
222
3100 meter200 meter
200 meter11
122
23400 meter
341
400 meter200 meter2
113
224
331600 meter

期望合并后的表格格式

赛事
60 meter
1
2
100 meter
1
2
3
4
5
6
7
...

解决步骤

  • 拆分各年度数据列:把每个年度的列数据单独提取,以Google Sheets为例,用公式导出到独立区域:

    • 提取2023年数据:=FILTER(A:A, A:A<>"")
    • 提取2022年数据:=FILTER(B:B, B:B<>"")
    • 提取2021年数据:=FILTER(C:C, C:C<>"")
  • 识别赛事标题行:赛事标题带斜体格式,可通过单元格格式特征(或关键词如"meter")筛选出所有赛事标题行,标记为分组依据。

  • 按赛事分类整理数据:新建工作表,先列出所有唯一赛事名称,再对应收集三个年度里该赛事的成绩、运动员信息行,依次追加到赛事标题下方。

  • 批量合并自动化(可选):数据量大时用脚本实现自动化,以下是Google Apps Script简化示例:

function mergeTrackData() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName("原始数据");
  const targetSheet = ss.getSheetByName("合并后数据");
  targetSheet.clear();
  
  // 获取各列非空数据
  const col2023 = sourceSheet.getRange("A:A").getValues().filter(row => row[0] !== "");
  const col2022 = sourceSheet.getRange("B:B").getValues().filter(row => row[0] !== "");
  const col2021 = sourceSheet.getRange("C:C").getValues().filter(row => row[0] !== "");
  
  const allData = [...col2023, ...col2022, ...col2021];
  const eventGroups = {};
  let currentEvent = "";
  
  // 按赛事分组数据
  allData.forEach(row => {
    const cellValue = row[0].toString();
    if (cellValue.includes("meter") || cellValue.includes("mile")) {
      currentEvent = cellValue;
      if (!eventGroups[currentEvent]) eventGroups[currentEvent] = [];
    } else if (currentEvent) {
      eventGroups[currentEvent].push(cellValue);
    }
  });
  
  // 写入合并后的数据
  let rowIndex = 1;
  targetSheet.getRange(rowIndex, 1).setValue("赛事");
  rowIndex++;
  
  Object.keys(eventGroups).forEach(event => {
    targetSheet.getRange(rowIndex, 1).setValue(event).setFontStyle("italic");
    rowIndex++;
    eventGroups[event].forEach(data => {
      targetSheet.getRange(rowIndex, 1).setValue(data);
      rowIndex++;
    });
  });
}
  • 验证与调整:合并完成后检查各赛事下的信息完整性,调整格式匹配预期样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:07:26