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

如何设置Office Script动态自动填充至数据最后一行

解决Excel Script自动填充指定列至数据最后一行(不填充空白行)的问题

要实现从B2开始自动填充到数据的最后一行且不填空白行,核心是动态获取真正有数据的最后行号,而非硬编码或整列操作。以下是修改后的实用脚本:

function main(workbook: ExcelScript.Workbook) {
    let selectedSheet = workbook.getActiveWorksheet();
    // 以A列为参考获取数据最后一行(假设A列是无空白的主数据列)
    const lastRow = selectedSheet.getRange("A:A").getLastCell().getRowIndex() + 1;
    // 构建精准的填充范围:B2到B列最后数据行
    const fillRange = `B2:B${lastRow}`;
    // 执行自动填充
    selectedSheet.getRange("B2").autoFill(fillRange, ExcelScript.AutoFillType.fillDefault);
}

关键细节说明:

  • 为什么用A列参考:因为要填充的B列本身可能只有B2有内容,用相邻的、包含完整记录的列(比如A列)才能准确获取真实数据的最后行,避免把空白行算进去。如果你的主数据列不是A列,直接把"A:A"改成对应列即可(比如C列写"C:C")。
  • 行号转换逻辑:getRowIndex()返回的是从0开始的索引值,所以要加1才能转换成Excel的常规行号(比如索引2对应第3行)。
  • 避免整列操作:直接用B:B会触发Excel的性能限制导致报错,动态生成的范围只覆盖有数据的区域,既高效又不会填充空白。

如果你的表格是Excel结构化表格(List Object),可以用下面的方式更精准定位:

function main(workbook: ExcelScript.Workbook) {
    let selectedSheet = workbook.getActiveWorksheet();
    // 获取工作表中的第一个结构化表格
    const table = selectedSheet.getTables()[0];
    if (!table) {
        console.log("当前工作表无结构化表格");
        return;
    }
    // 获取表格最后数据行的行号
    const lastRow = table.getRange().getLastCell().getRowIndex() + 1;
    const fillRange = `B2:B${lastRow}`;
    selectedSheet.getRange("B2").autoFill(fillRange, ExcelScript.AutoFillType.fillDefault);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:57:15