【问题标题】:Color cell RED if cell above value is lower如果高于值的单元格较低,则将单元格颜色为红色
【发布时间】:2013-06-25 17:46:24
【问题描述】:

我需要一个用于执行此操作的 Google 电子表格的公式/脚本:

如果当前单元格值高于上方单元格中的值,则将当前单元格背景设为红色(如果小于或等于则保留白色),如下所示:=IF((C34>B34),"make background red","leave background white") 只是不确定这是否可行或者我需要一个更复杂的脚本。

我需要这个公式来处理 224 个单元格(28 列和 8 行)。条件格式不起作用。

当天最多有 20 人查看文档,其中只有一个人会编辑数据。脚本是否会减慢实时电子表格的工作速度,因为我需要一些更复杂的公式来计算从主表到摘要表的数据。

我在这里和其他论坛搜索过,但每个人的公式都是独一无二的!

干杯

【问题讨论】:

    标签: google-apps-script google-sheets gs-conditional-formatting


    【解决方案1】:

    条件格式不起作用。

    可能不是当时写的,但现在确实如此。

    假设您的数组从左上角的 B34 开始,清除格式并选择 B35:AC41 和格式、条件格式...、格式单元格如果... 自定义公式为并且:

    =A35>A34
    

    选择红色填充并完成

    【讨论】:

      【解决方案2】:

      您可以使用onEdit() 触发器通过读取刚刚更改的单元格上方的值、进行比较和适当着色来对更改做出反应。您必须在脚本中执行此操作,您无法通过自定义函数控制颜色。

      您说“如果当前单元格的值高于上面单元格中的值...”,但您的示例有=IF((C34>B34)...,它是“旁边”,而不是“上面”。此代码使用.offset(-1,0) 表示“上方”,并确保它不会与第 1 行上方的行混淆 - 如果您的意思是“旁边”,您需要更改它。

      function onEdit(event)
      {
        if (isNaN(event.value)) return;        // If change was not a number, exit
        var changedCell = event.range;
        if (changedCell.getRow() == 1) return; // Nothing to do in Row 1
        var cellAbove = changedCell.offset(-1, 0);
        var background = 'white';              // Assume white background
        // Is the changed value greater than the value in the cell above?
        if ( parseFloat(event.value) > parseFloat(cellAbove.getValue()) ) {
          background = 'red';                  // Yes, so red background
        }
        changedCell.setBackground(background);
      }
      

      WRT 性能,触发功能会稍微减慢速度,但我怀疑由于有大量的多个查看器,您会看到更大的延迟,因为 google-docs 会保持所有这些不同的视图同步。 (我见过有

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-17
        • 1970-01-01
        • 2015-08-08
        • 2015-11-29
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多