我有以下非常简化的电子表格版本:
Sect | Lbl | A | B | C | D | E
==========================================================
Sec1 | Lbl1 | 1 | 8 | 6 | 10 |
----------------------------------------------------------
Sec2 | Lbl2 | 2 | 1 | 1 | >100 |
----------------------------------------------------------
etc...
我想对所有值应用规则/规则,说:
背景颜色=绿色,如果: -右侧的单元格不是空白,并且高于此值
背景颜色=红色,如果: -右边的单元格不是空白且小于此值
背景颜色=白色(无操作),如果: -右侧的单元格具有相同的值
此外,如果将该值设置为非数字“> 100”,则需要将此格式转换为100。
我正在使用C#通过Spreadsheets v4 API进行此操作。 到目前为止,我有下面的代码,但是我不确定如何将多个条件应用于格式设置规则。
在阅读下面的内容之前,请注意上面更新的表格示例
感谢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
)
它们在batchupdate请求中的索引如下: 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
}
});
问题在于它不会将条件格式应用于整个工作表,而仅将数据的第一列应用于
答案 0 :(得分:0)
CUSTOM_FORMULA
作为布尔条件类型index
为0和1 {
"type": "CUSTOM_FORMULA",
"values": [
{
userEnteredValue: "=AND(NOT(ISBLANK(A1)),A1>(IF(ISNUMBER(B1),B1,1*REGEXEXTRACT(B1,\"\d+\"))))"
}
]
}
{
"red": 1,
"green": 0,
"blue": 0,
"alpha": 1
}