您可以使用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 个查看者的速度。)