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

能否用Google Sheets QUERY或Apps Script实现数值区间文本映射?

解决方案:用QUERY函数或Apps Script实现分数区间分类

一、使用QUERY函数实现

Google Sheets的QUERY函数支持SQL风格的CASE WHEN语句,能高效完成区间分类,无需嵌套多层IF。假设你的数据在A列(Ref.No.)和B列(Avg.Score),表头在第1行,在C2单元格输入以下公式即可生成类别列:

=QUERY(A:B, "SELECT A, B, CASE
  WHEN B <= 3.74 THEN 'N/A'
  WHEN B >= 3.75 AND B <=7.4 THEN 'Poor'
  WHEN B >=7.5 AND B <=11.24 THEN 'Adequate'
  WHEN B >=11.25 AND B <=15.9 THEN 'Very Good'
  WHEN B >15.9 THEN 'Excellent'
END AS Category
WHERE A IS NOT NULL", 1)

说明:

  • 明确每个区间的上下限避免逻辑冲突(你给出的区间中>15和11.25-15.9存在重叠,这里调整为>15.9对应Excellent;若需严格按你描述的>15,可将最后一个条件改为WHEN B >15 THEN 'Excellent',但此时15.0-15.9的分数会优先匹配前面的Very Good区间)
  • WHERE A IS NOT NULL用于过滤空行
  • 最后一个参数1表示数据包含表头

二、使用Apps Script实现自定义函数

如果需要更灵活的处理(比如后续修改区间只需调整脚本),可以编写自定义函数:

  1. 打开Google Sheets,点击菜单栏「扩展程序」→「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
function getScoreCategory(score) {
  if (score === "" || score === null) return "";
  if (score <= 3.74) return "N/A";
  if (score >= 3.75 && score <=7.4) return "Poor";
  if (score >=7.5 && score <=11.24) return "Adequate";
  if (score >=11.25 && score <=15.9) return "Very Good";
  if (score >15.9) return "Excellent";
  return "Unknown"; // 处理超出所有区间的异常值
}
  1. 保存脚本(命名为ScoreCategory),回到表格
  2. 在C2单元格输入=getScoreCategory(B2),下拉填充即可为所有分数生成类别

批量处理脚本(可选)

如果需要一次性为整列添加类别,可使用以下脚本自动填充:

function batchAddCategories() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const dataRange = sheet.getDataRange();
  const values = dataRange.getValues();
  
  // 从第2行开始遍历(假设第1行是表头)
  for (let i = 1; i < values.length; i++) {
    const score = values[i][1]; // B列是Avg.Score
    let category = "";
    if (score <= 3.74) category = "N/A";
    else if (score >= 3.75 && score <=7.4) category = "Poor";
    else if (score >=7.5 && score <=11.24) category = "Adequate";
    else if (score >=11.25 && score <=15.9) category = "Very Good";
    else if (score >15.9) category = "Excellent";
    else category = "Unknown";
    
    sheet.getRange(i+1, 3).setValue(category); // 将类别写入C列
  }
}

运行该脚本后,会自动在C列填充所有分数对应的类别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:30