Цвет ячейки КРАСНЫЙ, если в ячейке выше значение меньше

Мне нужна формула / скрипт для электронной таблицы Google, которая сделает это:

Если текущее значение ячейки выше, чем значение в ячейке выше, сделать фон текущей ячейки красным (если он меньше или равен, оставьте белый), что-то вроде этого: =IF((C34>B34),"make background red","leave background white") просто не уверен, сработает ли это, или мне нужно больше сложный сценарий.

Мне нужна эта формула для работы с 224 ячейками (28 столбцов и 8 строк). Условное форматирование не работает.

В день документ будут просматривать до 20 человек, и только один будет редактировать данные. Будет ли сценарий замедлять работу живой электронной таблицы, поскольку у меня есть еще несколько довольно сложных формул, которые мне нужны для расчета данных из основного листа в сводный лист.

Я искал здесь и на других форумах, но формулы каждого уникальны!

Ваше здоровье


person user2530324    schedule 28.06.2013    source источник


Ответы (2)


Условное форматирование не работает.

Возможно, не тогда, когда это было написано, но сейчас.

Предполагая, что ваш массив начинается с B34 в верхнем левом углу, очистите форматирование и выберите B35: AC41 и Формат, Условное форматирование ..., Форматировать ячейки, если ... Пользовательская формула и:

=A35>A34

выберите красную заливку и Готово.

person pnuts    schedule 06.06.2017

Вы можете использовать триггер 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 зрителями.)

person Mogsdad    schedule 10.07.2013