Office.js Excel范围getRow给出错误的范围地址

在我的Excel选项卡窗格插件,我想从范围只有一些行基于活动选定的行。

最初我的数据位于“Sheet1!H5:I16”,并且我只在工作表中select了没有表格的行fe“Sheet1!8:10”

为了检测选中的行,我select了范围并加载了一些选项:

Excel.run(function (ctx) { var selectedRange = ctx.workbook.getSelectedRange(); selectedRange.load(['address', 'rowIndex', 'rowCount']); return ctx.sync().then(function() { console.log(selectedRange.address); }); }); 

它给我地址“Sheet1!8:10”和selectedRange.rowIndex = 7和selectedRange.rowCount = 3

现在我从select中减去我的范围行:

 var subsIndex = selectedRange.rowIndex - 5 // 5 is start index H5 

在这里,我有我的行内数据范围rowIndex,它是3。

再次:整个工作表我rowIndex是7,为select,相交我的数据范围,行索引是3。

现在,我想从整个数据Sheet1!H5:I16(仅限于选定的行(selectedRange.rowIndex = 7和selectedRange.rowCount = 3))获取第一行的内部数据范围rowIndex(它必须是Sheet1!H8:I10):

 Excel.run(function (ctx) { var sheetName = "Sheet1"; var rangeAddress = "H5:I16"; // my whole data range var range = ctx.workbook.worksheets.getItem(sheetName).getRange(rangeAddress).getRow(subsIndex ); //try to get row number 3 range.load('address'); return ctx.sync().then(function() { console.log(range.address); // gives me Sheet1!H5:I16 ??? }); }); 

为什么getRange(3)给我的只是整个范围的地址Sheet1!H5:I16按索引3排的行的地址:Sheet1!H8:I8?

在这里输入图像说明

橙色:数据范围

红色:需要的行

我不确定我是否完全按照你的情况。 但是我认为像下面这样的东西是可行的(事实上,并不需要你加载行索引等):

 return Excel.run(function (ctx) { var selection = ctx.workbook.getSelectedRange(); selection.format.fill.color = "purple"; var range = selection.getRow(3); range.format.fill.color = "yellow"; range.load('address'); return ctx.sync() .then(function() { console.log(range.address); }) .then(ctx.sync); }).catch(console.log); 

在这里输入图像说明