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电子表格的工作方式非常相似。该答案说明了其用法。
#1 楼
可以使用Google Apps脚本在Google Spreadsheets中实现复杂的条件格式。例如,您可以编写一个函数,该函数根据其中一行单元格中的值更改整个行的背景色,我认为使用“使用规则更改颜色”菜单无法实现这一功能。您可能希望为此函数设置触发器,例如“ On Edit”,“ On Open”和“ On Form Submit”。setBackgroundRGB()函数的文档
更新:这是一个Google Apps脚本示例,该示例基于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();
}
评论
我在第13行出现错误:var dataRange = sheet.getRange(r,1,1,3);如果我想使用此脚本根据特定名称(例如David)为行着色,我将如何更改它。而且我可能会更改字体而不是背景:setFontColor另外,如何在电子表格上运行脚本?谢谢
–user20212
2012年5月18日下午2:30
该示例的链接不再有效。创建脚本后如何使用?该答案中缺少该内容。
–丹尼尔·威廉姆斯(Daniel Williams)
13年8月17日在21:22
对于最常见的用例,现在有一个更简单的选项,下面的答案中对此进行了描述。
–山姆·布莱曼
2013年12月24日上午10:09
很遗憾,Google Spreadsheet链接已损坏。简短说明如何使用/激活脚本将是很好的。然而,很好的答案才行得通。 :)
–brimborium
2014年2月25日在9:13
#2 楼
如此处所述,新版Google表格允许您执行此操作。您必须先按照文章中的说明在Google驱动程序设置中启用新的电子表格。然后,您可以从条件格式选项中选择“自定义公式是”,然后输入任何公式(不要忘记添加=
前缀!)。不带$
前缀的单元格引用在应用于范围时会自动进行调整。似乎缺少从旧版到新版迁移的支持-它仅适用于新表,我发现只有值可以从一个复制到另一个。可以复制整张纸。
评论
感谢您指出了这一点。它确实可以按照我的意愿工作。
– Robert Koritnik
13年12月24日在11:14
目前,大多数旧的电子表格已迁移到新的Google表格中,因此有关迁移支持的说明已过时。
–鲁本♦
2015年10月14日15:44
#3 楼
我使用Apps-Script编写了此Web应用程序Color Code +,以满足大多数基本的条件格式设置需求。输入一些规则,它将吐出代码,然后将其粘贴到电子表格中的“工具”→“脚本编辑器...”下。(在Google论坛上的帮助主题。)#4 楼
如果您要在两个单元格中的总和与第三个单元格中的总和不同时想要使用红色背景进行条件格式化,则Google表格的条件格式规则如下所示:#5 楼
条件格式-自定义公式range 2:227
= if($i:$i = "Duplicate",True,False)
选择要突出显示行的颜色。
#6 楼
(2017年2月)如另一个答案所述,Google表格现在允许用户直接从用户界面添加条件格式,无论是在台式机/笔记本电脑,Android还是iOS设备上。但是,此答案的其余部分主要是针对开发人员的,因为您可以编写“执行”条件格式的应用程序。借助Google Sheets API v4(及更高版本),开发人员现在可以编写具有CRUD条件格式的应用程序规则。请查看指南和示例页面以获取更多详细信息以及参考文档(搜索
{add,update,delete}ConditionalFormatRule
)。该指南包含以下Python代码段(假设文件ID为SHEET_ID
和SHEETS
作为API服务端点):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:$D))'}]
},
},
},
}},
{'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:$D))'}]
},
},
},
}},
]
SHEETS.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,
body={'requests': reqs}).execute()
除Python外,Google API还支持多种语言,因此您可以选择。无论如何,该代码示例都会格式化工作表(请参见下图),从而使年龄中位数以下的那些以浅红色突出显示,而年龄中位数以上的那些则以红色字体着色。
注意:我的回答与该问题的答案相同,只是我放弃了PSA,因为它不需要生活在1个以上的地方。
评论
在SO提到的问题上,也有对该问题的几个答案。该答案所指的是“另一个答案”? (:另一方面,虽然来此网站的人可以编写代码,但我认为他们中的大多数人都像“自定义功能/用户定义的功能”那样以“最终用户开发”的方式进行操作。我不确定诸如他们中的大多数人都知道CRUD,他们可以从此答案中找到有用的所有其他细节。
–鲁本♦
17年3月21日在5:51
#7 楼
为了解决“新”表单中Q的具体问题,我建议从B:B清除所有条件格式,选择ColumnB并应用自定义公式,其格式如下:=A1=1
具有选择的格式并完成。
#8 楼
编辑条件格式时,请选择“自定义公式”并使用以下...=if(A1 = 1 , true)
选择颜色即可完成。
#9 楼
根据问题的说明进行编辑:在您的Google Spreadsheet窗口中,有一个菜单Format,带有“使用规则更改颜色”选项。这与Google Spreadsheet的条件格式一样技术。据我所知,无法根据另一个单元格的值为一个单元格着色-Google不允许您输入其他单元格的公式。
除非您将其他数据放入B列,您总是可以使B列的所有列均等于A列,然后使用“使用规则更改颜色”选项以类似的颜色为值为1的所有单元格上色-例如,值为1时为红色背景和红色文本,白色背景和白色文本(如果没有),则有效地隐藏了B列中的值。这将为您提供所需的外观。
在Excel中,您可以执行所需的操作。以您的数据为例,当该公式为true时,我有条件地格式化了B1:
=IF(A1=1,true,false)
,然后向下拖动格式,这仅突出显示了B所在的单元格A列中的邻居等于1。
原始答案
我不确定您是否可以在2列中执行此操作,但是我知道您可以在3列中执行此操作:
A | B | C
----------------
1 | f | x
在B列中,您可以使用
IF
公式查看是否x已放置在适当的C列中:=IF(C1="x",A1,"")
IF
公式包含3个部分-测试,then值和else值。在上面的示例中,该公式检查以查看C列中是否存在x
。如果存在,则输入A1中的值,否则,输入空白。 x
是大写还是小写都没关系。在列表顶部输入此公式后,即可使用拖动功能将公式向下拖动到列表的其余部分。在单元格以蓝色突出显示的情况下,将鼠标移到右下角的正方形上,直到光标变为十字准线。然后只需单击并按住并向下拖动即可将公式复制到下面的单元格中。
评论
我想你误会了我。问题是关于条件格式设置,而不是将值放在单元格中。
– Robert Koritnik
09年12月1日在15:44
目前,此答案已过时。请参阅应用条件格式设置规则-文档编辑器帮助
–鲁本♦
2015年6月14日2:00在
评论
自从您添加了2014年注释后,请考虑将对勾标记也移至描述现代方法的答案。