借助 ONLYOFFICE 高亮大于某个值的格子

很多时候,表格看起来可能会很乏味,让人很没有成就感。这个时候就需要一些宏的帮助了。这些小型脚本有助于实现日常任务的自动化,从而帮助我们提高生产力。

在本文中,我们将对一种用于高亮所有大于或小于某个值的小型宏进行讲解。

关于 ONLYOFFICE 宏

如果您是一名资深 Microsoft Excel 用户,那么相信您已对于 VBA 宏非常熟悉了。这些宏是帮助您自动执行日常任务的小型脚本。无论是重构数据,还是在单元格区域中插入多个值。ONLYOFFICE 宏的基础是 JavaScript 语法与文档生成器 API 方法。基于 JavaSript 的宏易于使用,具有跨平台特性且十分安全。这就使得其与 VBA 相比有着显著的优势。

ONLYOFFICE 文档免费在线宏课程

近期,我们将开始发布有关 ONLYOFFICE 解决方案的免费视频课程。首个视频课程将关注 ONLYOFFICE 文档中的宏,现已在 YouTube 上提供。

​本课程分为 4 节,每节时长大约在 5-10 分钟。您将了解宏的工作原理,以及一些实际的例子。为了方便起见,我们还在视频描述中添加了时间戳 – 只需点击一下即可转到您感兴趣的主题。

阅读​​这篇文章​​,了解更多。

参考宏

作为参考,这里我们使用了一个 VBA 宏。其会调用一个输入框用于输入需要大于的值,然后在表格中搜索选中区域并突出显示目标单元格。

宏代码如下:

 Sub HighlightGreaterThanValues()
Dim i As Integer
i = InputBox("Enter Greater Than Value", "Enter Value")
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlGreater, Formula1:=i
Selection.FormatConditions(Selection.FormatConditions.Count).S
tFirstPriority
With Selection.FormatConditions(1)
.Font.Color = RGB(0, 0, 0)
.Interior.Color = RGB(31, 218, 154)
End With
End Sub

但是,ONLYOFFICE 宏是基于JavaScript 的,这意味着其会更加通用,但也说明我们需要使用不同的方法来处理此任务。

使用单色对值进行高亮

这会是比较简单的选项。但在另一方面,这个宏还可以高亮显示所有小于某个值的各自。也就是说在此情形中,您可对使用一种颜色对所有大于某个值的格子进行高亮,还可用另一种颜色高亮所有小于某个值的格子。

好了,下面就让我们上手试试吧!首先,我们需要获取活动工作表。这里可以使用 Api.ActiveSheet 方法。其会返回一个代表活动工作表的对象。然后我们将目标放到在表格中的选中区域上:

(function () 
{
    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
})();

现在我们需要从选中区域中获取每个单元格的值。这里可以使用 ForEach 方法。其会在每个单元格上执行一次所需的函数:

(function () 
{
    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
    selection.ForEach(function (range) {
        var value = range.GetValue();
  });
    
})();

接下来我们加入 IF 语句,用于检查选中区域中的值是否大于某个数字。这里就假设需要大于 5。如果值大于 5,我们就使用 SetFillColor 方法来该表单元格的填充颜色。该方法会根据 RGB 代码来创建填充颜色:

(function () 
{
    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
    selection.ForEach(function (range) {
        var value = range.GetValue();
        if (value > 5) {
            range.SetFillColor(Api.CreateColorFromRGB(255,0,255));
        }
    });

现在我们来运行一下这个宏。

或者,您也可以改变目标值的字体颜色。为了实现这一目标,我们将需要将 SetFillColor 方法替换为 SetFontColor

 如需对小于某个值的各自进行高亮,则需要修改 IF 语句中的参数。现在,如果选中区域中某个单元格的值小于 5,那么单元格的背景颜色将发生变化。

(function () 
{
    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
    selection.ForEach(function (range) {
        var value = range.GetValue();
        if (value < 5) {
            range.SetFillColor(Api.CreateColorFromRGB(255, 255, 0));
        }
    });
    
})();

使用多种颜色进行高亮

现在我们来提高一下难度:创建一个宏来使用多种颜色高亮目标单元格。
首先我们需要一些独特的颜色。我们可以使用 CreateColorFromRGB 方法来生成颜色,然后将其存储于 uniqueColors 数组中 :

var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
        Api.CreateColorFromRGB(204, 204, 255),
        Api.CreateColorFromRGB(0, 255, 0),
        Api.CreateColorFromRGB(0, 128, 128),
        Api.CreateColorFromRGB(192, 192, 192),
        Api.CreateColorFromRGB(255, 204, 0),
        Api.CreateColorFromRGB(255, 0, 0),
        Api.CreateColorFromRGB(0, 255, 255),
        Api.CreateColorFromRGB(255, 0, 255),
        Api.CreateColorFromRGB(218, 128, 128),
        Api.CreateColorFromRGB(128, 0, 0),
        Api.CreateColorFromRGB(128, 0, 128),
        Api.CreateColorFromRGB(0, 0, 128),
        Api.CreateColorFromRGB(165, 42, 42),
        Api.CreateColorFromRGB(220, 20, 60),
        Api.CreateColorFromRGB(255, 99, 71),
        Api.CreateColorFromRGB(205, 92, 92),
        Api.CreateColorFromRGB(240, 128, 128),
        Api.CreateColorFromRGB(255, 165, 0),
        Api.CreateColorFromRGB(255, 215, 0),
        Api.CreateColorFromRGB(184, 134, 11),
        Api.CreateColorFromRGB(218, 165, 32),
        Api.CreateColorFromRGB(173, 255, 47),
        Api.CreateColorFromRGB(0, 100, 0),
        Api.CreateColorFromRGB(50, 205, 50),
        Api.CreateColorFromRGB(70, 130, 80),
        Api.CreateColorFromRGB(75, 0, 130),
        Api.CreateColorFromRGB(72, 61, 139),
        Api.CreateColorFromRGB(255, 182, 193),
        Api.CreateColorFromRGB(188, 143, 143),
        Api.CreateColorFromRGB(112, 128, 144),
        Api.CreateColorFromRGB(210, 180, 140),
        Api.CreateColorFromRGB(105, 105, 105),
        Api.CreateColorFromRGB(216, 191, 216),
        Api.CreateColorFromRGB(240, 248, 255),
        Api.CreateColorFromRGB(102, 205, 170),
        Api.CreateColorFromRGB(255, 240, 245)];

接着我们声明 uniqueColorIndex 并将其设为 0。我们将使用该变量为索引,用于从数组中选择唯一的颜色。为此需要添加一个 IF 语句,便于我们对数组进行检索,然后步增索引:

var uniqueColorIndex = 0;
        
        function getColor() {
            
            if (uniqueColorIndex === uniqueColors.length) {
                uniqueColorIndex = 0;
            }
            return uniqueColors[uniqueColorIndex++];

 这时我们就需要用一个 IF 语句来找出目标值,并将颜色应用在单元格中。这里涉及的概念与之前的宏类似。我们以活动工作表为目标。然后获取选定区域中的单元格值。接着添加 IF 语句,寻找大于小于某个值的单元格,并通过 SetFillColor 方法对其进行高亮显示。但这一次,颜色将会使用 getColor 函数进行生成:

    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
    selection.ForEach(function (range) {
        var value = range.GetValue();
        if (value > 5) {
            range.SetFillColor(getColor());
        } 
    });

 完整的宏代码如下:

(function () 
{
    
           
    var uniqueColors = [Api.CreateColorFromRGB(255, 255, 0),
        Api.CreateColorFromRGB(204, 204, 255),
        Api.CreateColorFromRGB(0, 255, 0),
        Api.CreateColorFromRGB(0, 128, 128),
        Api.CreateColorFromRGB(192, 192, 192),
        Api.CreateColorFromRGB(255, 204, 0),
        Api.CreateColorFromRGB(255, 0, 0),
        Api.CreateColorFromRGB(0, 255, 255),
        Api.CreateColorFromRGB(255, 0, 255),
        Api.CreateColorFromRGB(218, 128, 128),
        Api.CreateColorFromRGB(128, 0, 0),
        Api.CreateColorFromRGB(128, 0, 128),
        Api.CreateColorFromRGB(0, 0, 128),
        Api.CreateColorFromRGB(165, 42, 42),
        Api.CreateColorFromRGB(220, 20, 60),
        Api.CreateColorFromRGB(255, 99, 71),
        Api.CreateColorFromRGB(205, 92, 92),
        Api.CreateColorFromRGB(240, 128, 128),
        Api.CreateColorFromRGB(255, 165, 0),
        Api.CreateColorFromRGB(255, 215, 0),
        Api.CreateColorFromRGB(184, 134, 11),
        Api.CreateColorFromRGB(218, 165, 32),
        Api.CreateColorFromRGB(173, 255, 47),
        Api.CreateColorFromRGB(0, 100, 0),
        Api.CreateColorFromRGB(50, 205, 50),
        Api.CreateColorFromRGB(70, 130, 80),
        Api.CreateColorFromRGB(75, 0, 130),
        Api.CreateColorFromRGB(72, 61, 139),
        Api.CreateColorFromRGB(255, 182, 193),
        Api.CreateColorFromRGB(188, 143, 143),
        Api.CreateColorFromRGB(112, 128, 144),
        Api.CreateColorFromRGB(210, 180, 140),
        Api.CreateColorFromRGB(105, 105, 105),
        Api.CreateColorFromRGB(216, 191, 216),
        Api.CreateColorFromRGB(240, 248, 255),
        Api.CreateColorFromRGB(102, 205, 170),
        Api.CreateColorFromRGB(255, 240, 245)];
    var uniqueColorIndex = 0;
        
        function getColor() {
            
            if (uniqueColorIndex === uniqueColors.length) {
                uniqueColorIndex = 0;
            }
            return uniqueColors[uniqueColorIndex++];
        }
    
    var activeSheet = Api.ActiveSheet;
    var selection = activeSheet.Selection;
    selection.ForEach(function (range) {
        var value = range.GetValue();
        if (value > 5) {
            range.SetFillColor(getColor());
        } 
    });
    
})();

 现在就到了运行宏的时候了!

再次提醒,这里还可以使用 SetFontColor 方法:

本文中所介绍的小型宏只是众多 API 方法的可能实现中的一种。ONLYOFFICE 宏的功能极其丰富,也欢迎您来上手尝试并打造自己的脚本。欢迎随时与我们分享您的想法和宏。我们将随时做好与您探讨和合作的准备。祝您的探索之旅一帆风顺!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值