我的插件从每个工作表中删除了很多行,但是当我按下ctrl + end时,光标仍然移动到初始区域的最后一个单元格,它现在是空的。这是我正在做的事情的一个简略版本:
const used_range = sheet.getUsedRange()
const rows = used_range.rowCount
const columns = used_range.columnCount
const full_content = this.format(used_range) // returns a new matrix of values, but with some rows removed
used_range.clear()
sheet.getRangeByIndexes( 0 , 0, full_content.length, columns ).values = full_content
sheet.getRangeByIndexes( full_content.length, 0, (rows - full_content.length), columns ).delete('Up')
await context.sync()第二个sheet.getRangeByIndexes包含剩余的范围。如果我设置了填充的颜色,我可以看到选择的范围是正确的,所以我预计调用delete('Up')会删除这些行,这样它们就不再是使用的范围的一部分,但工作表的最后一行仍然是删除它们之前的行。这是一个问题,因为即使它们是空的,这些行也会影响文件大小。
有趣的是,如果我执行used_range.delete('Up')并按下ctrl + end,单元格A1将被选中。
有没有办法强制缩小工作表范围?还是我做错了什么?
发布于 2019-12-02 23:52:56
从excel中删除(以前使用过的)单元格时,使用的范围不一定会立即重置。我不完全确定原因,因为我正在努力寻找关于它的文档,但很可能是因为最后一个操作仍然是可逆的。
要解决此问题,您可以保存该文件,或关闭并再次打开它。然后,Excel将正确地重新计算已用范围,并将按预期显示。
编辑:这是一个相当常见的问题,称为“幽灵细胞”,它很可能与仍然存在于内存中的细胞有关。
https://stackoverflow.com/questions/59142198
复制相似问题