美文网首页
借助 ONLYOFFICE 高亮大于某个值的格子

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

作者: ONLYOFFICE | 来源:发表于2022-08-11 15:11 被阅读0次

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

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

参考宏

作为参考,这里我们使用了一个 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 宏的功能极其丰富,也欢迎您来上手尝试并打造自己的脚本。欢迎随时与我们分享您的想法和宏。我们将随时做好与您探讨和合作的准备。祝您的探索之旅一帆风顺!

相关文章

  • mongodb exp 操作符号总结

    exp $ne : 不等于某个值 $eq : 等于某个值 $gt : 大于某个值 $in : 包含某些值,也可以用...

  • 爬取糗事百科文字版

    主要收获 字典数据写入mongodb数据库 数据库中取值 点赞数大于某个值时提取数据,用$gte表示大于等于某个数...

  • 微信小程序mpvue实现吸顶效果

    效果 某块区域,当滑动距离大于某个值时,就让这块区域固定在顶部,如果小于某个值,就让它恢复原样。 代码 注意点 整...

  • C++ 判断一个数组是否全为0

    如果要判断一个数组里面是否全为某个变量的值, 以此类推,还可以判断所有元素是否大于或者小于某个值;除了数组,还可以...

  • mongoose时间区间操作

    大于某个时间 大于等于某个时间 小于某个时间 小于等于某个时间 某个时间段

  • MongoDB常用关键字解析

    $gt大于$lt小于$ne不等于$gte大于或等于$lte小于或等于$inc可以对文档的某个值为数字型(只能为满足...

  • Spring Data JPA 关键字

    在查询时,通常需要同时根据多个属性进行查询,且查询的条件也格式各样(大于某个值、在某个范围等等),Spring D...

  • Spring Data JPA 提供了一些表达条件查询的关键字

    在查询时,通常需要同时根据多个属性进行查询,且查询的条件也格式各样(大于某个值、在某个范围等等),Spring D...

  • Opencv之图像二值化

    二值化是图像分割的一种方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度...

  • UICollectionView 的选中和取消

    UICollectionView 的cell 点击选中。 需求,选中某个cell 。某个cell 呈现高亮的状态。...

网友评论

      本文标题:借助 ONLYOFFICE 高亮大于某个值的格子

      本文链接:https://www.haomeiwen.com/subject/ggnxgrtx.html