使用电子表格的过程中,有时我们需要将某些行隐藏起来,这样在操作规模比较大的数据块时能更加方便。在本文中,我们将向您展示如何使用一个小而精巧的 ONLYOFFICE 宏来实现此功能。
为此,我们将使用 SetHidden 方法。此方法其实已在另一个 ONLYOFFICE 宏(可用于取消隐藏电子表格中的所有行和列)中使用过一次。
关于 ONLYOFFICE 宏
如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏的基础是 JavaScript 语法与文档生成器 API 方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。
ONLYOFFICE 文档免费在线宏课程
近期,我们将开始发布有关 ONLYOFFICE 解决方案的免费视频课程。首个视频课程将关注 ONLYOFFICE 文档中的宏,现已在 YouTube 上提供。
本课程分为 4 节,每节时长大约在 5-10 分钟。您将了解宏的工作原理,以及一些实际的例子。为了方便起见,我们还在视频描述中添加了时间戳 – 只需点击一下即可转到您感兴趣的主题。
阅读这篇文章,了解更多。
构建“隐藏所选行”宏
宏代码如下:
var activeSheet = Api.ActiveSheet;
var indexRowMax = 1048576;
var n = 1;
for (let i = 0; i < indexRowMax; i++) {
activeSheet.GetRows(n).SetHidden(false);
n++;
}
如需取消隐藏文档中的所有行,我们需要将 indexRowMax 变量设置为最大行数。然后通过 for loop 循环遍历整个电子表格,接着将 SetHidden 方法的属性值更改为 FALSE,以此取消对于行的隐藏。
相信您也猜到了,SetHidden 方法的作用多种多样。不仅可用于取消隐藏行,还可用于隐藏行。不过,如果我们想要隐藏一些特定的行,那么 for loop 循环可能并不是最好的选择。此时我们会建议使用 ForEach 函数来对目标文档中的已选部分进行遍历。这将有助于根据单元格值来隐藏所选内容中的特定行。
所以,首先我们需要获取活动工作表和已选择部分:
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
然后添加 ForEach 函数来遍历所选部分中的所有单元格并获取值:
selection.ForEach(function (range) {
var value = range.GetValue();
}
接着我们添加一条 if 语句,用于获取包含小于 35 的值的行索引。我们会将此索引存储在变量中,并将其用作设置行隐藏状态的参数:
selection.ForEach(function (range) {
var value = range.GetValue();
if (value < "35") {
var row = range.GetRow();
range.GetRows(row[range]).SetHidden(true);
}
完整的宏代码如下:
(function()
{
var activeSheet = Api.ActiveSheet;
var selection = activeSheet.Selection;
selection.ForEach(function (range) {
var value = range.GetValue();
if (value < "35") {
var row = range.GetRow();
range.GetRows(row[range]).SetHidden(true);
}
});
})();
现在让我们来运行一下宏,看看效果如何!
希望这里的宏能够帮助您更便捷地对电子表格数据进行管理。这里的宏只是借助我们的 API 方法可以实现的众多功能之一。我们的宏是基于 JavaScript 的,这就确保了其灵活性,您可轻松根据自己的需求进行定制。我们强烈建议您上手试试,制作自己的宏。
欢迎随时提问,也欢迎与我们分享您的想法。我们已做好与您探讨和合作的准备。祝您的探索之旅一帆风顺!
相关链接
如何为 ONLYOFFICE 文档(Docs)创建宏