1

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

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

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

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

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

干杯

4

2 回答 2

2

条件格式不起作用。

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

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

=A35>A34

选择红色填充和Done

于 2017-06-06T02:18:11.300 回答
1

您可以使用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 会保持所有这些不同的视图同步。(我见过小于 100 个单元格的表格,没有任何公式难以跟上小于 10 个查看者的速度。)

于 2013-07-10T03:25:04.030 回答