У меня есть следующая очень упрощенная версия электронной таблицы:
Sect | Lbl | A | B | C | D | E
==========================================================
Sec1 | Lbl1 | 1 | 8 | 6 | 10 |
----------------------------------------------------------
Sec2 | Lbl2 | 2 | 1 | 1 | >100 |
----------------------------------------------------------
etc...
Я хочу применить правило / правила ко всем значениям, чтобы сказать:
Bg Цвет = Зеленый, если: -ячейка справа не пуста и превышает это значение
Bg Color = Red, если: - ячейка справа не пуста и меньше этого значения
Bg Color = white (никаких действий), если: - ячейка справа имеет то же значение
Кроме того, если для значения задано нечисловое значение "> 100", мне необходимо преобразовать его в 100 в рамках этого форматирования,
Я использую C # для этого с помощью API Spreadsheets v4.Пока у меня есть код ниже, но я не уверен, как я могу применить несколько условий к правилу форматирования.
Обновление
Пожалуйста, обратите внимание на обновленный пример таблицы выше, прежде чем читать ниже
Благодаря TheMaster я что-то запустил, но не совсем правильноеще.У меня есть дополнительный коэффициент:
- первая строка должна быть исключена из условного форматирования
- первые два столбца являются метками и также должны игнорироваться / исключаться
- все остальные столбцы и строки данных должны сравниваться с правым столбцом (если имеется) и соответственно окрашиваться.
Вот мой код правила Red
(where cell value > cell value to the right
).В дополнение к этому у меня есть Green
правило (where cell value < cell value to the right
) и White
правило (where cell value = cell value to the right
)
Они индексируются как показано ниже в запросе пакетного обновления: 0 = красный 1 = зеленый 2= белый
Код для правила Red
:
formatRequest.Requests.Add(new Google.Apis.Sheets.v4.Data.Request()
{
AddConditionalFormatRule = new AddConditionalFormatRuleRequest()
{
Rule = new ConditionalFormatRule()
{
BooleanRule = new BooleanRule()
{
Condition = new BooleanCondition()
{
Type = "CUSTOM_FORMULA",
Values = new List<ConditionValue>() {
new ConditionValue()
{
UserEnteredValue = "=AND(NOT(ISBLANK(A2)),(1*REGEXEXTRACT(A2,\"\\d+\"))>(1*REGEXEXTRACT(B2,\"\\d+\")))"
}
}
},
Format = new CellFormat()
{
BackgroundColor = new Color()
{
Red = 0.8f,
Green = 0f,
Blue = 0f,
Alpha = 1f
}
}
},
Ranges = new List<GridRange>()
{
new GridRange()
{
SheetId = Convert.ToInt32(sheetId)
,StartRowIndex = 1
},
}
},
Index = 0
}
});
Проблема в том, что оно не применяет условное форматирование ко всему листу ... только к первому столбцу данных.