1

これを行う Google スプレッドシートの数式/スクリプトが必要です。

現在のセルの値が上のセルの値よりも大きい場合、現在のセルの背景を赤にします (以下の場合は白のままにします) =IF((C34>B34),"make background red","leave background white")。脚本。

224 個のセル (28 列と 8 行) で機能するには、この数式が必要です。条件付き書式が機能しません。

当日の資料閲覧は20名まで、データ編集は1名のみとなります。メイン シートからサマリー シートへのデータを計算する必要がある非常に複雑な数式がいくつかあるため、スクリプトはライブ スプレッドシートの動作を遅くします。

ここや他のフォーラムを検索しましたが、みんなの式はユニークです!

乾杯

4

2 に答える 2

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 に答える