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

Google Sheets:Summary工作表A列新增值时自动复制上一行公式

Google Sheets「summary」表自动复制公式方案

完全可行,两种方案解决

方案1:数组公式批量适配(推荐,无需脚本)

放弃逐行复制的思路,用ARRAYFORMULA直接给整列套公式,自动跟随A列的新增行。

比如你B列原公式是针对单行的计算,把它改成数组兼容的写法,示例:

  • 原B2公式:=SUM(数据!B2:D2)
  • 数组版替换为:
=ARRAYFORMULA(IF(A2:A="", "", SUMIF(ROW(数据!B:B), ROW(A2:A), 数据!B:D)))

或者如果是VLOOKUP类查询:

=ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, 数据源!A:C, 3, FALSE)))

关键:把原公式里的固定行号(比如A2)改成整列引用(A2:A),同时用IF(A2:A="", "", ...)避免空行显示错误。

方案2:Apps Script脚本(适配复杂公式)

如果你的公式逻辑太复杂,数组公式搞不定,用脚本监听A列编辑事件,自动复制上一行公式:

  1. 打开表格→扩展程序→Apps Script
  2. 粘贴以下代码:
function onEdit(e) {
  const targetSheet = e.source.getSheetByName("summary");
  // 只处理summary表的A列新增内容
  if (!targetSheet || e.range.columnStart !== 1 || e.value === "") return;
  
  const newRow = e.range.rowStart;
  if (newRow === 1) return; // 跳过表头
  
  // 复制上一行的公式到新行(B列到最后一列)
  const prevRowFormulas = targetSheet.getRange(newRow-1, 2, 1, targetSheet.getLastColumn()-1).getFormulas()[0];
  targetSheet.getRange(newRow, 2, 1, prevRowFormulas.length).setFormulas([prevRowFormulas]);
}
  1. 保存脚本,之后A列新增内容时,上一行的公式会自动同步到新行。

为什么你之前的方法失败?

INDIRECT是单单元格函数,没法在ARRAYFORMULA里自动遍历行号,导致只能固定引用某一行,没法适配新增行。改用数组原生支持的函数写法,或者用脚本,就能解决问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:32:40