基于一个 2 个值有条件地格式化单元格颜色
Conditionally format cell color based one 2 values
我有一个电子表格,屏幕截图,如果文本包含“keto”AND“250g”,我想为单元格 E(绿色)着色。这两个值不只是一个。目前我不知道如何为 2 个字符串执行此操作,仅适用于 1 个。这是用于 1 个字符串的代码:
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp
.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E10000')])
.whenTextContains("Brownies")
.setBackground('#B7E1CD')
.build());
使用.whenFormulaSatisfied
感谢@TheMaster 在评论中提出的建议。
我不得不重新排序你的代码,因为它不起作用。您似乎在定义变量之前调用变量,并在构建变量之前为 sheet 设置规则。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
var sheet = spreadsheet.getActiveSheet()
var conditionalFormatRules = sheet.getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp
.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E10')])
// HERE IS THE RELEVANT METHOD
.whenFormulaSatisfied('=AND( FIND("Keto",E1) , FIND("250g",E1) )')
.setBackground('#B7E1CD')
.build());
sheet.setConditionalFormatRules(conditionalFormatRules)
}
参考和解释
whenFormulaSatisfied
的文档。
我使用 AND formula along with the FIND 公式将其计算为 return TRUE
仅当单元格同时包含两者时。
您可能在复制和粘贴时犯了错误,但请注意 getConditionalFormatRules
和 build()
在 调用 setConditionalFormatRules
之前 setConditionalFormatRules
。
做类似事情的另一种方法
这可能不是您要查找的内容,但以防万一。您可以探索 onEdit(e)
触发器。每次用户对 sheet 进行编辑时,它都会 运行。您使用的 e
参数包含编辑的详细信息,例如范围。从那里您可以创建一个 if 语句来检查它是否包含您想要的字符串。它允许您将检查逻辑与格式化逻辑分开。如果您的 sheet 需要更复杂的行为,那么条件格式很快就会变得乏味。
这里有一些关于触发器的参考 material:
- Simple Triggers - 对于最基本的触发器。
- Installable Triggers - 如果您需要触发器具有更多功能。
我有一个电子表格,屏幕截图,如果文本包含“keto”AND“250g”,我想为单元格 E(绿色)着色。这两个值不只是一个。目前我不知道如何为 2 个字符串执行此操作,仅适用于 1 个。这是用于 1 个字符串的代码:
spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp
.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E10000')])
.whenTextContains("Brownies")
.setBackground('#B7E1CD')
.build());
使用.whenFormulaSatisfied
感谢@TheMaster 在评论中提出的建议。
我不得不重新排序你的代码,因为它不起作用。您似乎在定义变量之前调用变量,并在构建变量之前为 sheet 设置规则。
function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet()
var sheet = spreadsheet.getActiveSheet()
var conditionalFormatRules = sheet.getConditionalFormatRules();
conditionalFormatRules.push(SpreadsheetApp
.newConditionalFormatRule()
.setRanges([spreadsheet.getRange('E1:E10')])
// HERE IS THE RELEVANT METHOD
.whenFormulaSatisfied('=AND( FIND("Keto",E1) , FIND("250g",E1) )')
.setBackground('#B7E1CD')
.build());
sheet.setConditionalFormatRules(conditionalFormatRules)
}
参考和解释
whenFormulaSatisfied
的文档。
我使用 AND formula along with the FIND 公式将其计算为 return TRUE
仅当单元格同时包含两者时。
您可能在复制和粘贴时犯了错误,但请注意 getConditionalFormatRules
和 build()
在 调用 setConditionalFormatRules
之前 setConditionalFormatRules
。
做类似事情的另一种方法
这可能不是您要查找的内容,但以防万一。您可以探索 onEdit(e)
触发器。每次用户对 sheet 进行编辑时,它都会 运行。您使用的 e
参数包含编辑的详细信息,例如范围。从那里您可以创建一个 if 语句来检查它是否包含您想要的字符串。它允许您将检查逻辑与格式化逻辑分开。如果您的 sheet 需要更复杂的行为,那么条件格式很快就会变得乏味。
这里有一些关于触发器的参考 material:
- Simple Triggers - 对于最基本的触发器。
- Installable Triggers - 如果您需要触发器具有更多功能。