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

如何在Google Apps Script中将区域值重复n次到另一区域?

问题分析

你的代码核心问题是每次写入F列时都从第1行开始,覆盖了之前的内容,所以最终只保留了最后一个C列值的重复结果。另外还有循环条件不够灵活、单元格读写效率低的问题。

修正后的代码
function Repeatn() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const repeatCount = sheet.getRange(1, 1).getValue();
  // 批量获取C列第5行开始的非空数据
  const sourceValues = sheet.getRange(5, 3, sheet.getLastRow() - 4, 1)
    .getValues()
    .filter(row => row[0] !== "");
  
  // 生成需要写入的目标数组
  const targetValues = [];
  sourceValues.forEach(row => {
    const value = row[0];
    for (let i = 0; i < repeatCount; i++) {
      targetValues.push([value]);
    }
  });

  // 清空F列原有内容(可选),然后批量写入
  if (targetValues.length > 0) {
    sheet.getRange(1, 6, targetValues.length, 1).clearContent();
    sheet.getRange(1, 6, targetValues.length, 1).setValues(targetValues);
  }
}
关键改进点
  • 避免覆盖问题:用数组收集所有需要写入的内容,最后一次性写入F列,确保内容依次排列。
  • 动态获取数据源:通过getLastRow()和filter自动获取C列从第5行开始的所有非空值,不需要固定循环次数。
  • 提升效率:批量读写单元格(getValues()/setValues())比单独调用getValue()/setValue()快得多,尤其当数据量较大时。
效果说明

运行修正后的代码后,C列从第5行开始的每个值会按照A1指定的次数重复,依次填充到F列,和你预期的效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:35:22