Google sheet 如果另一个 sheet 中的同一单元格不为空,则条件格式设置为单元格颜色
Google sheets conditional formatting to colour cell if the same cell in another sheet is not empty
我有 2 个 sheets A 和 B。如果 sheet B 中完全相同的单元格不为空,我希望 sheet A 为单元格着色。例如,如果单元格 A1
in sheet B 有一个字符串,则单元格 A1
in sheet A 将被着色。
假设我想比较大范围,我应该怎么做?
示例:https://docs.google.com/spreadsheets/d/1P3Ob_mclpXWmILfKwD4R6JN2wAYPUcNZlmtF9LxilV0/edit?usp=sharing
sheet B 中的 A2:C2
、D5
和 K2
单元格不为空。因此 sheet A 中的相应单元格将被着色为红色。
解释:
不熟悉如何使用自定义条件格式公式完成此操作,因此请等待其他人帮助您。
不过,我可以为您提供 Google Apps 脚本解决方案。
以下脚本将检查 sheet B
中的数据范围,并构建一个颜色数组。如果 values
数组中的值为空,则此数组的元素将具有白色十六进制颜色 #ffffff"
,如果值不为空,则为红色 #ff0000
。
然后根据这个颜色数组一次性给sheet A
上色。即使对于大范围,该脚本也相对较快。
解决方案/解决方法:
不要忘记将 "sheet A"
和 "sheet B"
调整为您的工作表名称。
function colorCells(){
const ss = SpreadsheetApp.getActive();
const sheetToColor = ss.getSheetByName("sheet A");
const sheetToCheck = ss.getSheetByName("sheet B");
const bValues = sheetToCheck.getDataRange().getValues();
const aColors=bValues.map(r=>r.map(v=>v==''?"#ffffff":"#ff0000"));
sheetToColor.getRange(1,1,sheetToCheck.getLastRow(),sheetToCheck.getLastColumn()).
setBackgrounds(aColors);
}
如何使用:
点击 Tools
=> Scipt editor
,复制、粘贴并保存上述代码,然后点击播放按钮执行。
如果您希望它“自动”工作,那么您可以设置一个时间触发器,每隔 n
分钟为您执行一次该功能。
红利代码:
您可以执行相同的操作,但使用的是一种更具用户交互性的方式。再次,将以下脚本复制、粘贴并保存到脚本编辑器,但这次不要执行它,因为它可以自行运行。
以下脚本将在 用户 对 sheet B
中的同一单元格进行编辑时更改 sheet A
中单元格的颜色:
function onEdit(e) {
// adjust this to your needs:
const sheetToColorName = "sheet A";
const sheetToCheckName = "sheet B";
const rng = e.range;
const cell = rng.getA1Notation();
if (rng.getSheet().getName()==sheetToCheckName){
const sheetToColor = e.source.getSheetByName(sheetToColorName);
if(rng.getValue()!=''){
sheetToColor.getRange(cell).setBackground("#ff0000"); //red
}
else {
sheetToColor.getRange(cell).setBackground("#ffffff"); //white
}
}
}
您可以使用以下公式作为条件格式规则:
=NOT(ISBLANK(INDIRECT("B!"&address(row(),column()))))
(A!A2
中的公式 只是向 展示 sheet B
中发生的事情)
我有 2 个 sheets A 和 B。如果 sheet B 中完全相同的单元格不为空,我希望 sheet A 为单元格着色。例如,如果单元格 A1
in sheet B 有一个字符串,则单元格 A1
in sheet A 将被着色。
假设我想比较大范围,我应该怎么做?
示例:https://docs.google.com/spreadsheets/d/1P3Ob_mclpXWmILfKwD4R6JN2wAYPUcNZlmtF9LxilV0/edit?usp=sharing
sheet B 中的 A2:C2
、D5
和 K2
单元格不为空。因此 sheet A 中的相应单元格将被着色为红色。
解释:
不熟悉如何使用自定义条件格式公式完成此操作,因此请等待其他人帮助您。
不过,我可以为您提供 Google Apps 脚本解决方案。
以下脚本将检查 sheet B
中的数据范围,并构建一个颜色数组。如果 values
数组中的值为空,则此数组的元素将具有白色十六进制颜色 #ffffff"
,如果值不为空,则为红色 #ff0000
。
然后根据这个颜色数组一次性给sheet A
上色。即使对于大范围,该脚本也相对较快。
解决方案/解决方法:
不要忘记将 "sheet A"
和 "sheet B"
调整为您的工作表名称。
function colorCells(){
const ss = SpreadsheetApp.getActive();
const sheetToColor = ss.getSheetByName("sheet A");
const sheetToCheck = ss.getSheetByName("sheet B");
const bValues = sheetToCheck.getDataRange().getValues();
const aColors=bValues.map(r=>r.map(v=>v==''?"#ffffff":"#ff0000"));
sheetToColor.getRange(1,1,sheetToCheck.getLastRow(),sheetToCheck.getLastColumn()).
setBackgrounds(aColors);
}
如何使用:
点击 Tools
=> Scipt editor
,复制、粘贴并保存上述代码,然后点击播放按钮执行。
如果您希望它“自动”工作,那么您可以设置一个时间触发器,每隔 n
分钟为您执行一次该功能。
红利代码:
您可以执行相同的操作,但使用的是一种更具用户交互性的方式。再次,将以下脚本复制、粘贴并保存到脚本编辑器,但这次不要执行它,因为它可以自行运行。
以下脚本将在 用户 对 sheet B
中的同一单元格进行编辑时更改 sheet A
中单元格的颜色:
function onEdit(e) {
// adjust this to your needs:
const sheetToColorName = "sheet A";
const sheetToCheckName = "sheet B";
const rng = e.range;
const cell = rng.getA1Notation();
if (rng.getSheet().getName()==sheetToCheckName){
const sheetToColor = e.source.getSheetByName(sheetToColorName);
if(rng.getValue()!=''){
sheetToColor.getRange(cell).setBackground("#ff0000"); //red
}
else {
sheetToColor.getRange(cell).setBackground("#ffffff"); //white
}
}
}
您可以使用以下公式作为条件格式规则:
=NOT(ISBLANK(INDIRECT("B!"&address(row(),column()))))
(A!A2
中的公式 只是向 展示 sheet B
中发生的事情)