为何getRange跨工作表粘贴正常,getRangeByIndex却无法生效?
为什么用getRangeByIndexes复制粘贴工作表区域会失效?
问题出在getRangeByIndexes的参数取值错误,ExcelScript里的行、列索引都是从0开始计数的,和Excel界面显示的1-based行号、列标逻辑不一样。
看你的代码对比:
getRange("F9:J9")选中的是Excel界面第9行的F到J列,对应0-based规则的行索引是8(9-1),列索引5到9(F是第6列,减1得5;J是第10列,减1得9),区域行数1,列数5。- 但你写的
getRangeByIndexes(0,5,1,5)实际选中的是第1行的F到J列,和你要复制的F9:J9完全不是同一个区域,自然复制粘贴达不到预期效果。
修正后的代码如下:
function main(workbook: ExcelScript.Workbook) { let temp = workbook.getWorksheet("Temp"); let selectedSheet = workbook.getActiveWorksheet(); // 将选中工作表的F9:J9区域粘贴到Temp工作表的A1区域 temp.getRange("A1").copyFrom(selectedSheet.getRangeByIndexes(8,5,1,5), ExcelScript.RangeCopyType.all, false, false); }
关键注意点
getRangeByIndexes的参数顺序是:(起始行索引, 起始列索引, 区域行数, 区域列数)- 所有索引必须转换为0-based:Excel界面的行号/列标减1就是对应的索引值
内容的提问来源于stack exchange,提问作者Jampong
相关产品推荐
相关产品推荐

