Google Sheets宏能否为同工作表内不同长度列表批量添加数字?
批量为多组列表生成左侧数字序列的Google Sheets宏方案
以下是可以一次性完成3个列表数字填充的Google Apps Script宏,直接适配你的需求:
宏代码实现
打开你的Google Sheets,依次点击「工具」>「脚本编辑器」,替换默认代码为以下内容:
function fillNumberSequences() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 配置三个列表的参数:[左侧填充列起始行, 列表数据起始行, 列表数据列号] // 列号规则:A=1,B=2,C=3,以此类推 const lists = [ [2, 2, 2], // 第一个列表:A2开始填充,数据从B2起 [9, 9, 2], // 第二个列表:A9开始填充,数据从B9起 [14, 14, 2] // 第三个列表:A14开始填充,数据从B14起 ]; lists.forEach(list => { const fillStartRow = list[0]; const dataStartRow = list[1]; const dataCol = list[2]; // 获取当前列表的最后一行(自动识别到空行前的最后一个有效数据) const lastRow = sheet.getRange(dataCol, dataStartRow).getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow(); const listLength = lastRow - dataStartRow + 1; // 生成1到列表长度的数字序列 const numberSequence = Array.from({length: listLength}, (_, i) => [i + 1]); // 将序列写入左侧对应列 sheet.getRange(fillStartRow, 1, listLength, 1).setValues(numberSequence); }); }
使用步骤
- 根据你表格的实际布局,调整
lists数组中的参数:- 每个子数组的第一个值是左侧要填充数字的起始行号;
- 第二个值是对应列表的第一个数据行号;
- 第三个值是列表数据所在的列号(比如数据在C列就填3);
- 点击脚本编辑器顶部的「保存」,给宏命名(比如
fillNumberSequences); - 返回工作表,点击「扩展程序」>「宏」>「fillNumberSequences」,执行后即可一次性完成所有列表的数字填充。
扩展说明
- 如果后续需要新增列表,只需在
lists数组中添加新的子数组配置即可; - 脚本会自动识别每个列表的长度(直到遇到空行为止),无需手动计算列表项数。
内容的提问来源于stack exchange,提问作者Patch171
相关产品推荐
相关产品推荐

