如何在Excel Office Scripts中获取B2到B列最后连续数据单元格的范围?
在Excel Office Scripts中实现Ctrl+Down选中连续数据范围
要实现从B2开始,选中B列中最后一个连续有数据的单元格(等效于Ctrl+Down操作),可以使用getExtendedRange方法,它能精准模拟键盘方向键扩展范围的行为。
修改后的代码
function main(workbook: ExcelScript.Workbook) { let selectedSheet = workbook.getActiveWorksheet(); // 获取起始单元格B2 let startCell = selectedSheet.getRange("B2"); // 模拟Ctrl+Down,扩展到连续数据的末尾 let targetRange = startCell.getExtendedRange(ExcelScript.KeyboardDirection.down); // 设置选中范围的字体为加粗 targetRange.getFormat().getFont().setBold(true); }
代码说明
getExtendedRange(ExcelScript.KeyboardDirection.down):该方法从起始单元格出发,向下扩展范围,直到遇到第一个空白单元格,和Ctrl+Down的原生行为完全一致。如果B2下方无数据,范围会保留为B2;如果B2本身为空,则会跳转到下方第一个非空单元格,再继续扩展到该连续数据段的末尾。
如果你的需求是获取B列所有有数据的单元格(忽略中间空白,直接定位到列最后一个有数据的单元格),可以使用以下写法:
function main(workbook: ExcelScript.Workbook) { let selectedSheet = workbook.getActiveWorksheet(); // 获取B列的已使用范围 let columnBRange = selectedSheet.getRange("B:B").getUsedRange(); // 构建从B2到B列最后一个有数据单元格的范围 let targetRange = selectedSheet.getRange(`B2:B${columnBRange.getLastRow()}`); targetRange.getFormat().getFont().setBold(true); }
注意这种方式和Ctrl+Down行为不同,它会包含B列所有有数据的行,即使中间存在空白单元格。
内容的提问来源于stack exchange,提问作者user15235239
相关产品推荐
相关产品推荐

