我需要一个Google电子表格的公式/脚本来执行此操作:
如果当前单元格值高于上面单元格中的值,则使当前单元格背景为红色(如果小于或等于然后保持白色),如下所示:=IF((C34>B34),"make background red","leave background white")
只是不确定是否这样会工作,或者我需要一个更复杂的脚本。
我需要这个公式来处理224个单元格(28列和8行)。条件格式不会工作。
当天最多有20人在查看文档,只有一人正在编辑数据。脚本是否会减慢实时电子表格的工作速度,因为我需要一些非常复杂的公式来计算从主表到汇总表的数据。
我在这里和其他论坛搜索过,但每个人的公式都是独一无二的!
干杯
答案 0 :(得分:2)
条件格式化不起作用。
可能不是在写的时候,但现在确实如此。
假设您的阵列在B34的左上角开始,清除格式并选择B35:AC41和格式,条件格式......,格式化单元格如果... 自定义公式并且:
=A35>A34
选择红色填充并完成。
答案 1 :(得分: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个观众。)