You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Google Sheets/Data Studio中训练数据拆分与总容量计算的RegEx实现需求

在Google Sheet中计算训练总容量的解决方案

我来帮你搞定这个训练容量计算的需求,不用切换到Python,直接在Google Sheet里就能高效实现,给你两种实用方案:

方案一:用内置函数组合(无需代码)

如果你不想写脚本,直接用Google Sheet的内置函数就能完成计算。假设你的训练数据在A1单元格,直接在其他单元格输入下面的公式即可:

=SUM(ARRAYFORMULA(IFERROR(REGEXEXTRACT(SPLIT(A1, ", "), "(\d+)kg")*REGEXEXTRACT(SPLIT(A1, ", "), "-(\d+)x")*REGEXEXTRACT(SPLIT(A1, ", "), "x(\d+)"))))

公式拆解:

  • SPLIT(A1, ", "):把单元格里的多组数据按, 拆分,变成独立的训练组条目
  • REGEXEXTRACT(..., "(\d+)kg"):提取每组里kg前面的数字(训练重量)
  • REGEXEXTRACT(..., "-(\d+)x"):提取每组里-x之间的数字(组数)
  • REGEXEXTRACT(..., "x(\d+)"):提取每组里x后面的数字(每组次数)
  • ARRAYFORMULA:让函数批量处理拆分后的所有训练组,不用手动下拉
  • IFERROR:避免因格式错误(比如空值、不符合规则的条目)导致公式报错
  • SUM:把所有训练组的容量(重量×组数×次数)相加得到总容量

方案二:用Apps Script自定义函数(更灵活)

如果你的训练数据格式偶尔有变动,或者需要更直观的函数名,用Google Apps Script写个自定义函数会更方便:

步骤:

  1. 打开你的Google Sheet,点击顶部菜单栏的「扩展程序」→「Apps Script」
  2. 删除编辑器里的默认代码,粘贴下面的JavaScript代码:
function CALCULATETOTALVOLUME(cellContent) {
  // 如果单元格为空,返回0
  if (!cellContent) return 0;
  // 拆分每组训练数据
  const trainingSets = cellContent.split(", ");
  let totalVolume = 0;
  
  // 循环处理每一组数据
  trainingSets.forEach(set => {
    // 用正则匹配重量、组数、次数
    const matchResult = set.match(/(\d+)kg-(\d+)x(\d+)/);
    if (matchResult) {
      const weight = parseInt(matchResult[1]);
      const setCount = parseInt(matchResult[2]);
      const repCount = parseInt(matchResult[3]);
      // 累加单组容量到总容量
      totalVolume += weight * setCount * repCount;
    }
  });
  
  return totalVolume;
}
  1. 点击编辑器顶部的保存按钮,给你的项目起个名字(比如「TrainingVolumeCalculator」)
  2. 回到Google Sheet,在任意单元格输入=CALCULATETOTALVOLUME(A1),就能得到A1单元格的训练总容量,下拉公式还能批量处理整列数据

自定义函数优势:

  • 函数名更直观,容易理解和使用
  • 如果你的数据有小数点(比如80.5kg-3x5),只需要把正则里的(\d+)改成(\d+\.?\d*)就能适配
  • 可以轻松扩展逻辑,比如增加对不同格式的兼容,或者过滤无效数据

关于Google Data Studio的使用

如果需要在Data Studio里分析这些数据,只需要在Google Sheet里先计算好总容量列,然后把这个Sheet作为数据源导入Data Studio即可,直接用计算好的列做可视化分析。

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

火山引擎 最新活动