Как установить условное форматирование в определенной ячейке, которая зависит от значения другой ячейки?

В моем примере я хотел бы условно форматировать ячейки столбца B. Те, которые отмечены знаком x , должны быть отформатированы в соответствии со значением в столбце A (в примере значение 1):

A | B
1 | x
2 | 
3 | 
1 | x
1 | x
4 | 
8 |

// x can be any value and is here merely to mark the cell that should be formatted

ВАЖНО ПРИМЕЧАНИЕ 2014 . Условное форматирование на основе формулы, которая может включать другие ячейки, теперь возможно в Google Таблицах и работает очень похоже на работу таблиц Excel. Этот ответ объясняет его использование.

68 голосов | спросил Robert Koritnik 1 TueEurope/Moscow2009-12-01T16:38:16+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2009 16:38:16 +0300 2009, 16:38:16

9 ответов


49

Сложное условное форматирование может быть достигнуто в Google Spreadsheets с помощью Google Apps Script. Например, вы можете написать функцию, которая изменяет цвет фона всей строки на основе значения в одной из ее ячеек, что, по моему мнению, невозможно в меню «Изменить цвет с правилами». Вероятно, вы захотите установить триггеры для этой функции, такие как «On Edit», «On Open» и «On Form Submit».

Документация для функции setBackgroundRGB ()

ОБНОВЛЕНИЕ. Пример сценария Google Apps Script для изменения цвета фона целая строка на основе значения в столбце A. Если значение положительное, используйте зеленый цвет. Если пустой, белый. В противном случае, красный. См. Результаты в общедоступной Таблице Google . (Вы должны будете войти в систему для запуска сценария, но без входа в систему вы все равно можете увидеть результаты).

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();

  for (var r = startRow; r <= endRow; r++) {
    colorRow(r);
  }
}

function colorRow(r){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, 1, 1, 3);

  var data = dataRange.getValues();
  var row = data[0];

  if(row[0] === ""){
    dataRange.setBackgroundRGB(255, 255, 255);
  }else if(row[0] > 0){
    dataRange.setBackgroundRGB(192, 255, 192);
  }else{
    dataRange.setBackgroundRGB(255, 192, 192);
  }

  SpreadsheetApp.flush(); 
}

function onEdit(event)
{
  var r = event.source.getActiveRange().getRowIndex();
  if (r >= 2) {
    colorRow(r);
  }
}

function onOpen(){
  colorAll();
}
​

â €

ответил Liam 19 J000000Monday10 2010, 17:55:18
19

новые листы Google позволяет вам делать это , как описано здесь . Вы должны сначала включить новые электронные таблицы в настройках Google Driver, как описано в статье. Затем вы можете выбрать «Пользовательская формула» из условных параметров форматирования и ввести любую формулу (не забудьте добавить префикс =!). Ссылки на ячейки без префиксов $ настраиваются автоматически при применении к диапазонам, как и следовало ожидать.

Кажется, что поддержка миграции от старого к новому отсутствует - она ​​применима только к новым листам, и я обнаружил, что только значения могут быть скопированы из одного в другое. Копирование всего листа может быть вариантом.

ответил Sam Brightman 24 TueEurope/Moscow2013-12-24T14:08:38+04:00Europe/Moscow12bEurope/MoscowTue, 24 Dec 2013 14:08:38 +0400 2013, 14:08:38
2

Я написал это веб-приложение, Цветовой код + , с Apps-Script, чтобы покрыть большую часть основных потребностей в условном форматировании. Выполните некоторые правила, и он выплюнет код, который вы затем можете вставить в свою электронную таблицу, в Инструменты â † ' Редактор сценариев ... . ( раздел справки на форумах Google.)

ответил Bryan P 10 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 10 Sep 2012 22:08:21 +0400 2012, 22:08:21
0

При редактировании условного форматирования выберите Пользовательская формула и используйте следующее ...

=if(A1 = 1 , true)

Выберите цвета и сделанные вами.

ответил user3246197 14 PM00000030000003531 2015, 15:11:35
0

Условное форматирование - настраиваемая формула

range 2:227

= if($i:$i = "Duplicate",True,False)

выберите цвет, который вы хотите выделить.

ответил Hari R 27 PM00000050000005731 2015, 17:38:57
0

Правила условного формата Google Таблиц выглядят следующим образом: if you want to conditionally format with red background if sum in two cells is different than in 3rd cell: Правила условного формата Google Таблиц с одним цветом и настраиваемой формулой

ответил ViliusK 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 13 Sep 2016 11:28:05 +0300 2016, 11:28:05
0

(февраль 2017) Как упоминалось в другом ответе, Google Таблицы теперь позволяют пользователям добавлять «Условное форматирование» непосредственно из пользовательского интерфейса, будь то на настольных /переносных компьютерах, устройствах Android или iOS. Тем не менее, остальная часть этого ответа в основном предназначена для разработчиков, потому что вы можете писать условное форматирование приложений «делать».

С Google Таблицами API v4 (и более поздними) разработчики теперь могут писать приложения, которые Правила условного форматирования CRUD. Ознакомьтесь с руководство и samples для более подробной информации, а также справочные документы (поиск {add,update,delete}ConditionalFormatRule). В руководстве представлен этот фрагмент Python (при условии, что в качестве конечной точки API-интерфейса используется идентификатор файла SHEET_ID и SHEETS):

myRange = {
    'sheetId': 0,
    'startRowIndex': 1,
    'endRowIndex': 11,
    'startColumnIndex': 0,
    'endColumnIndex': 4,
}

reqs = [
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {'textFormat': {'foregroundColor': {'red': 0.8}}}
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=GT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
    {'addConditionalFormatRule': {
        'index': 0,
        'rule': {
            'ranges': [ myRange ],
            'booleanRule': {
                'format': {
                    'backgroundColor': {'red': 1, 'green': 0.4, 'blue': 0.4}
                },
                'condition': {
                    'type': 'CUSTOM_FORMULA',
                    'values':
                        [{'userEnteredValue': '=LT($D2,median($D$2:$D$11))'}]
                },
            },
        },
    }},
]

SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
        body={'requests': reqs}).execute()

В дополнение к Python API Google поддерживают различные языки , поэтому у вас есть параметры , Во всяком случае, этот пример кода форматирует лист (см. Изображение ниже), так что те, кто моложе медианного возраста, подсвечиваются светло-красным цветом, а те, кто над медианом, имеют свои данные, окрашенные в красный шрифт.

 Пример условного форматирования

ПРИМЕЧАНИЕ. Мой ответ здесь идентичен тому, который был над SO для этого вопроса , за исключением того, что я сбросил PSA, t нужно жить в> 1 месте.

ответил wescpy 7 MaramTue, 07 Mar 2017 04:58:19 +03002017-03-07T04:58:19+03:0004 2017, 04:58:19
0

Чтобы задать специфику Q в «новых» листах, я предлагаю очистить любое условное форматирование от B: B, выбрав ColumnB и применяя Пользовательская формула :

=A1=1

с форматированием по выбору и Готово .

ответил pnuts 20 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 20 Sep 2017 08:34:52 +0300 2017, 08:34:52
-1

Изменить в ответ на разъяснение вопроса:

В окне Google Spreadsheet появится меню «Формат» с опцией «Изменить цвет с правилами». Это так же технически, как условное форматирование Google Spreadsheet. Насколько я могу судить, нет способа раскрасить одну ячейку на основе чужого значения - Google не позволяет вводить формулы для других ячеек.

Если вы не помещаете другие данные в столбец B, вы всегда можете сделать столбец B равным столбцу A, а затем использовать опцию «Изменить цвет с правилами», чтобы покрасить все ячейки со значением 1 с одинаковыми цветами - т. е. красный фон и красный текст, когда значение равно 1, белый фон и белый текст, когда это не так, эффективно скрывая значение в столбце B. Это даст вам вид, который вы хотите.

В Excel вы можете делать то, что хотите. Используя ваши данные в качестве примера, я условно отформатировал B1, когда эта формула истинна: ​​

=IF(A1=1,true,false)

, а затем перетащил форматирование вниз, в котором выделены только ячейки в B, где его сосед в столбце A равен 1.

Excel может это сделать, но не google http://img81.imageshack.us /img81/5290/excel.png


Оригинальный ответ

Я не уверен, что вы можете сделать это в 2 столбцах, но я знаю, что вы можете сделать это в 3:

 A  |  B  |  C
----------------
 1  |  f  |  x

В столбце B вы можете использовать формулу IF, чтобы узнать, помещен ли x в соответствующий столбец C:

=IF(C1="x",A1,"") 

Формула IF содержит 3 части - тест, значение then и значение else . В приведенном выше примере формула проверяет, существует ли в столбце C код x. Если он есть, он вводит значение из A1, иначе он вводит пробел. Не имеет значения, верхний или нижний регистр x.

После ввода этой формулы в верхней части списка вы можете использовать функцию перетаскивания, чтобы перетащить формулу вниз для остальной части вашего списка. Когда ячейка выделена синим цветом, наведите указатель мыши на квадрат в правом нижнем углу, пока курсор не станет перекрестием. Затем просто нажмите и удерживайте при перетаскивании вниз, чтобы скопировать формулу в ячейки ниже.

ответил Jared Harley 1 TueEurope/Moscow2009-12-01T17:23:29+03:00Europe/Moscow12bEurope/MoscowTue, 01 Dec 2009 17:23:29 +0300 2009, 17:23:29

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132