トリガーを使用して、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 人未満のビューアーに追いつくのに苦労している数式がないシートを見たことがあります。)