使用Office-JS获取当前区域

如何使用Excel JS API获取ActiveCell周围的当前区域?

在VBA中是这样的

Set rng=ActiveCell.CurrentRegion 

没有直接的等价物,但是我们有一个range.getUsedRange() ,它将采用一个现有的范围,并给你一个较小的范围来表示非空的部分。 请注意,如果整个范围内没有任何内容,则此方法将抛出一个未发现的错误(因为实际上它是一个空的范围,Excel无法表示)。

如果你真的需要CurrentRegion场景(我想知道更多),你可以先得到使用的范围(以确保你没有加载太多的数据),然后加载values属性,然后做range.getExpandedRange(indexOfLastRow, indexOfLastColumn)

顺便说一句,不像VBA的使用范围,JS“getUsedRange()”总是创build一个当前使用的范围(人们可能会过时的VBA)的准确快照,我们不仅暴露在工作表上,而且暴露给定的范围。

更新

我的意思是有两个情景,一个更简单,另一个更难。

更简单的一个 :你大概知道你需要什么范围,但你只需要修剪它。 例如,您知道在列A:C中有一个类似于表的实体,但您不知道行数。 那是在哪里

 worksheet.getRange("A:C").getUsedRange() 

会得到你所需要的。

更困难的一个 :你使用getUsedRange()来减less你可以,但你然后加载range.values和手动search行和列在每个单元格为空( "" )。 一旦你有了(假设你发现你关心的相对行索引是5,列索引2),你可以这样做

 originalRange.getCell(0, 0).getExpandedRange(rowIndex, columnIndex) 

上面的具体示例:虽然工作表的getUsedRange()大得多(因此我的build议可以尝试通过执行range.getUsedRange() )来进一步修剪),但是A2:C7中有数据。 但是对于这种情况,让我们假设工作表上的getUsedRange返回对应于A1:Z100的范围。 worksheet.getRange(0, 0)会得到你第一个单元格,然后你可以扩展5行和2列(你可以通过简单的尽pipe繁琐的数组迭代)来获得你关心的范围。 说得通?