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

如何用Google Sheets/Apps Script基于列表值生成带空白的目标列表?

实现思路(Google Sheets/Apps Script)

方案一:纯公式实现(无需脚本)

假设「项目列表1」在A列(从A2开始),「项目列表2」在B列(从B2开始),目标列表放在C列,直接在C2单元格输入以下公式,然后下拉填充即可:
=IF(A2="New Line", "", INDEX($B$2:$B, ROW(A2)-ROW($A$2)+1 - COUNTIF($A$2:A2, "New Line")))

公式逻辑

  • 先判断当前A列单元格是否为"New Line",是则返回空值
  • 若不是,用ROW(A2)-ROW($A$2)+1计算当前行在「项目列表1」中的位置序号
  • 用COUNTIF($A$2:A2, "New Line")统计从A2到当前行中"New Line"的数量,用序号减去这个数量,得到「项目列表2」中对应内容的位置,最后用INDEX取出内容

方案二:Apps Script脚本实现

如果需要更灵活的逻辑(比如批量处理、自动触发更新),可以用脚本实现:

  1. 打开你的Google表格,点击「扩展程序」>「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
function generateTargetList() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 获取非空的项目列表数据
  const projects1 = sheet.getRange("A2:A").getValues().filter(row => row[0] !== "");
  const projects2 = sheet.getRange("B2:B").getValues().filter(row => row[0] !== "");
  const targetList = [];
  let p2Index = 0;

  // 遍历项目列表1生成目标内容
  projects1.forEach(item => {
    if (item[0] === "New Line") {
      targetList.push([""]);
    } else {
      // 只要项目列表2还有内容,就依次取用
      targetList.push(p2Index < projects2.length ? [projects2[p2Index][0]] : [""]);
      p2Index++;
    }
  });

  // 将结果写入C列(从C2开始)
  sheet.getRange(2, 3, targetList.length, 1).setValues(targetList);
}
  1. 点击脚本编辑器的运行按钮,授权后即可生成目标列表

额外优化

如果想在「项目列表1」或「项目列表2」内容变化时自动更新目标列表,可以添加触发器:

  • 在脚本编辑器中点击「编辑」>「当前项目的触发器」
  • 点击「添加触发器」,选择函数为generateTargetList,事件类型选「从电子表格」>「编辑时」,保存即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:10:32