使用Office-JS获取当前区域

时间:2016-10-21 17:06:10

标签: excel office-js

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

在VBA中,这是

Set rng=ActiveCell.CurrentRegion

2 个答案:

答案 0 :(得分:1)

JavaScript API 中的当前区域属性现已实现。该属性称为 getSurroundingRegion()

答案 1 :(得分:0)

没有直接的等价物,但我们确实有一个range.getUsedRange(),它将占用一个现有的范围,并为您提供一个代表非空部分的较小范围。请注意,如果整个范围内没有任何内容,此方法将抛出一个未找到的错误(因为它实际上是一个空的范围,Excel无法表达)。

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

BTW,与VBA的usedRange不同,JS“getUsedRange()”总是创建当前使用范围的准确快照(VBA可能会变得陈旧),我们不仅在工作表上暴露它,而且在给定范围。

更新

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

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

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

可以满足您的需求。

更难的:您使用getUsedRange()减少了所需的内容,但随后加载range.values并手动搜索每个单元格所在的行和列空("")。一旦你有了(假设你发现你关心的相对行索引是5,列索引2),你可以做到

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

上面的具体示例:你有A2:C7中的数据,虽然工作表的getUsedRange()要大得多(因此我的建议可能会尝试通过执行range.getUsedRange()进一步削减它)。但是对于这种情况,让我们假设工作表上的getUsedRange返回了与A1:Z100相对应的范围。 worksheet.getRange(0, 0)将为您提供第一个单元格,然后您可以通过5行和2列(通过简单的尽管繁琐的数组迭代找到)扩展,以获得您关注的范围。有意义吗?