我有一个包含两个工作表的Google电子表格。每个工作表包含一列URL,后跟6列数据。我想在第二张纸上突出显示值是否不同,理想情况下根据值为红色或绿色背景设置特定单元格样式。
第1页
BinaryFormatter
第2页
╔═════════════╦═════╦════╦═════╦════╦════╦════╗
║ URL ║ d1 ║ d2 ║ d3 ║ d4 ║ d5 ║ d6 ║
╠═════════════╬═════╬════╬═════╬════╬════╬════╣
║ example.com ║ 400 ║ 11 ║ 2.2 ║ 50 ║ 60 ║ 70 ║
╚═════════════╩═════╩════╩═════╩════╩════╩════╝
在这种情况下,我希望突出显示55,68和90值,因为它们与第1张不同。
我的快速解决方案是将每个工作表导出为CSV,然后对它们运行差异以突出显示更改,但这并不能完全达到我想要的效果。
答案 0 :(得分:2)
条件格式可以这样做,但它只能引用同一工作表中的单元格。要解决此限制,请放置
等命令=arrayformula(Sheet1!B2:H2)
在第二张纸上的某处(例如,在单元格AB2中)。然后使用条件格式为B2:H2,规则“值不等于... = AB2”。
(输入条件格式化公式,因为它应该被格式化的范围的左上角读取)。
避免重复数据的另一种方法是使用Apps脚本。这是 根据您描述的情况设置背景的示例代码。请注意,除非将其设置为在每次编辑时触发,否则不会自动更新。
首选带有条件格式的方法。
function compare() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName('Sheet1');
var sheet2 = ss.getSheetByName('Sheet2');
var values1 = sheet1.getRange('B2:H2').getValues()[0];
var values2 = sheet2.getRange('B2:H2').getValues()[0];
var backgrounds = [];
for (var k = 0; k < values1.length; k++) {
backgrounds.push(values1[k] == values2[k] ? 'white' : 'red');
}
sheet2.getRange('B2:H2').setBackgrounds([backgrounds]);
}
答案 1 :(得分:2)