如何通过Excel Scripts将AA-AD列动态填充至Z列的最后一行?
Excel Script: 动态根据Z列最后一行填充AA-AD列
我来帮你搞定这个动态填充的问题!核心思路就是先找到Z列有数据的最后一行,再用这个行号来确定AA-AD列的填充范围,这样就不会出现填充过多或不足的情况了。
修改后的完整代码
function main(workbook: ExcelScript.Workbook) { let selectedSheet = workbook.getActiveWorksheet(); // 设置初始表头和第一行公式 selectedSheet.getRange("AA26:AD27").setFormulas([ ["FAK", "FK", "PN", "STEEL"], ["=S27&R27", "=XLOOKUP(AA27,'[FAKEFILENAME.xlsx]FAKE VENDOR'!$A:$A,'[FAKEFILENAME.xlsx]FAKE VENDOR'!$B:$B)", "=\"PIPE SPOOL \"&U27", "=XLOOKUP(AC27,'[FAKEFILENAME.xlsx]PARTS'!$B:$B,'[FAKEFILENAME.xlsx]PARTS'!$F:$F)"] ]); // 获取Z列最后一行的行号(转换为Excel的1-based行号) const lastRowZ = selectedSheet.getRange("Z:Z").getLastCell().getRowIndex() + 1; // 动态拼接填充范围并执行自动填充 const targetFillRange = `AA27:AD${lastRowZ}`; selectedSheet.getRange("AA27:AD27").autoFill(targetFillRange, ExcelScript.AutoFillType.fillDefault); }
关键部分解释
- 获取Z列最后一行:
selectedSheet.getRange("Z:Z").getLastCell()会定位到Z列中最后一个包含数据的单元格,getRowIndex()返回的是0-based索引(从0开始计数),所以加1转换为Excel常用的1-based行号。 - 动态生成填充范围:用模板字符串
AA27:AD${lastRowZ}自动拼接出目标范围,确保AA-AD列只填充到Z列最后一行对应的位置。 - 保持原有逻辑:保留了你原来的表头和第一行公式设置,只修改了填充范围的部分,不会影响原有功能。
内容的提问来源于stack exchange,提问作者Jayden Tijerina
相关产品推荐
相关产品推荐

