Как установить условное форматирование в определенной ячейке, которая зависит от значения другой ячейки?
В моем примере я хотел бы условно форматировать ячейки столбца 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. Этот ответ объясняет его использование.
9 ответов
Сложное условное форматирование может быть достигнуто в 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();
}
â €
новые листы Google позволяет вам делать это , как описано здесь . Вы должны сначала включить новые электронные таблицы в настройках Google Driver, как описано в статье. Затем вы можете выбрать «Пользовательская формула» из условных параметров форматирования и ввести любую формулу (не забудьте добавить префикс =
!). Ссылки на ячейки без префиксов $
настраиваются автоматически при применении к диапазонам, как и следовало ожидать.
Кажется, что поддержка миграции от старого к новому отсутствует - она применима только к новым листам, и я обнаружил, что только значения могут быть скопированы из одного в другое. Копирование всего листа может быть вариантом.
Я написал это веб-приложение, Цветовой код + , с Apps-Script, чтобы покрыть большую часть основных потребностей в условном форматировании. Выполните некоторые правила, и он выплюнет код, который вы затем можете вставить в свою электронную таблицу, в Инструменты â † ' Редактор сценариев ... . ( раздел справки на форумах Google.)
При редактировании условного форматирования выберите Пользовательская формула и используйте следующее ...
=if(A1 = 1 , true)
Выберите цвета и сделанные вами.
Условное форматирование - настраиваемая формула
range 2:227
= if($i:$i = "Duplicate",True,False)
выберите цвет, который вы хотите выделить.
Правила условного формата Google Таблиц выглядят следующим образом: if you want to conditionally format with red background if sum in two cells is different than in 3rd cell
:
(февраль 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 месте.
Чтобы задать специфику Q в «новых» листах, я предлагаю очистить любое условное форматирование от B: B, выбрав ColumnB и применяя Пользовательская формула :
=A1=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
.
После ввода этой формулы в верхней части списка вы можете использовать функцию перетаскивания, чтобы перетащить формулу вниз для остальной части вашего списка. Когда ячейка выделена синим цветом, наведите указатель мыши на квадрат в правом нижнем углу, пока курсор не станет перекрестием. Затем просто нажмите и удерживайте при перетаскивании вниз, чтобы скопировать формулу в ячейки ниже.