在我的Excel选项卡窗格中,我想要仅根据活动的选定行从范围中获取一些行。
最初我的数据位于“Sheet1!H5:I16”,我只在工作表中选择没有表f.e.的行。 “Sheet 1中8:10”
为了检测选定的行,我得到了选择范围并加载了一些选项:
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
现在我从选择中减去我的范围行:
var subsIndex = selectedRange.rowIndex - 5 // 5 is start index H5
在这里,我的行在数据范围rowIndex中,它是3.
再次:对于整个工作表我的rowIndex为7,为了选择,与我的数据范围相交,行索引为3.
现在我想从整个数据Sheet1得到第一行内部数据范围rowIndex(它必须是Sheet1!H8:I10)!H5:I16仅基于选定的行(selectedRange.rowIndex = 7和selectedRange.rowCount = 3 ):
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?
橙色:数据范围
红色:需要的行
答案 0 :(得分:0)
我不确定我是否完全按照你的方案。但我认为以下内容将起作用(实际上,并不需要您加载行索引等):
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);