我试图弄清楚如何在谷歌电子表格上使用条件格式,类似于您可以通过公式在 excel 中执行的操作。
如果单元格 O2 的值为“X”,我希望单元格 A2 变为绿色,这将在两列一直向下完成。我知道这需要一个脚本。
我遇到了一个类似的链接,但我不知道如何调整它以满足我的需求。这是可以做到的吗?
链接: https ://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting
我试图弄清楚如何在谷歌电子表格上使用条件格式,类似于您可以通过公式在 excel 中执行的操作。
如果单元格 O2 的值为“X”,我希望单元格 A2 变为绿色,这将在两列一直向下完成。我知道这需要一个脚本。
我遇到了一个类似的链接,但我不知道如何调整它以满足我的需求。这是可以做到的吗?
链接: https ://webapps.stackexchange.com/questions/16745/google-spreadsheets-conditional-formatting
这是一个脚本,您可以使用它来执行您所描述的操作:
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var columnO = sheet.getRange(2, 15, sheet.getLastRow()-1, 1);
var oValues = columnO.getValues();
for (var i = 0; i < oValues.length; i++) {
if (oValues[i][0] == 'X') {
sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green');
}
}
}
在新的 Google 表格中,这不再需要脚本。
相反,在条件格式中,选择“自定义公式”选项,然后输入一个值,例如=O2="X"
- 或任何返回布尔真/假值的表达式。
据我所知,这些自定义脚本中列出的引用有点奇怪,应用如下......
如果它是您所选范围内的单元格,则将其更改为“突出显示的单元格”。
如果它是您所选范围之外的单元格,则将其更改为“该位置,加上与当前单元格到所选范围左上角的偏移量相同的偏移量”。
也就是说,如果您的范围是A1:B2
,则上述内容与在每个单元格上设置单独的格式相同,如下所示:
A1 =O2="X"
A2 =O3="X"
B1 =P2="X"
B2 =P3="X"
您还可以指定固定引用,例如=$O$2="X"
- 这将检查所选范围内所有单元格的特定单元格 O2。
(2017 年 2 月)正如另一个答案中提到的,Google 表格现在允许用户直接从用户界面添加条件格式,无论是在台式机/笔记本电脑、Android 还是 iOS 设备上。
同样,使用Google Sheets API v4(和更新版本),开发人员现在可以编写 CRUD 条件格式规则的应用程序。查看指南和示例页面以获取更多详细信息以及参考文档(搜索{add,update,delete}ConditionalFormatRule
)。该指南以这个 Python 片段为特色(假设文件 ID为 API 服务端点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$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,Google API 还支持多种语言,因此您可以选择。无论如何,该代码示例格式化一张表格(见下图),以便那些年龄小于中位数的人以浅红色突出显示,而那些超过中位数的人的数据以红色字体着色。
公共服务声明
最新的 Sheets API 提供了旧版本中没有的功能,即让开发人员可以像使用用户界面一样以编程方式访问工作表(条件格式 [!]、冻结行、单元格格式、调整行/列大小、添加数据透视表、创建图表等)。
如果您是 API 新手,并且希望看到更长、更通用的使用 API 的“真实世界”示例,我创建了各种视频和相关博客文章:
如您所知,Sheets API 主要用于上述面向文档的功能,但执行文件级访问,例如上传和下载、导入和导出(与上传和下载相同,但转换为/从各种格式),请改用Google Drive API。使用 Drive API 的示例:
(*) - TL;DR:将纯文本文件上传到云端硬盘,导入/转换为 Google Docs 格式,然后将该 Doc 导出为 PDF。上面的帖子使用 Drive API v2;这篇后续帖子描述了将其迁移到 Drive API v3,这是一个结合了“穷人转换器”帖子的视频。
使用最新的Sheet API,您可以以编程方式将条件格式规则添加到您的工作表中以进行突出显示。
您可以添加一个自定义公式规则,将 A 列中的背景颜色设置为绿色,其中 O 列是“X”,如下所示:
function applyConditionalFormatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var numRows = sheet.getLastRow();
var rangeToHighlight = sheet.getRange("A2:A" + numRows);
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied('=INDIRECT("R[0]C[14]", FALSE)="X"')
.setBackground("green")
.setRanges([rangeToHighlight])
.build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);
}
条件格式适用的范围是工作表中从第 2 行到最后一行的 A 列。
自定义公式为:
=INDIRECT("R[0]C[14]", FALSE)="X"
这意味着在所选范围列的右侧移动 14 列并检查其值是否为“X”。
O 列是 A 列右侧的 14 列。