![](/img/trans.png)
[英]How to change background color of row based on cell value? -Google Spreadsheet
[英]Change cell value based on cell color in google spreadsheet
我一直在寻找一种基于另一种单元格颜色来更改单元格值的方法(例如,如果单元格颜色为红色,则为“文本”)?
有没有办法做到这一点?
我知道有一种方法可以根据单元格值更改单元格颜色,但我想要相反的方式,
有人知道吗? 无论是脚本还是公式
Google appscript中有类似的内容,不确定电子表格中是否也有任何直接公式,但是这里是:
我将Sheet1的 A1单元格上色为红色,即#ff0000,然后使用以下代码获得颜色:
function test()
{
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var color = sheet.getRange(1, 1).getBackground();
Logger.log(color);
}
输出量
#ff0000
因此,您只需要检查if(color == "#ff0000")
(或所需的任何颜色的代码),然后设置值即可。
编辑
这是将满足您要求的代码。 我还添加了评论,以便您可以进一步开发它。
function myFunction() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var data1 = sheet1.getDataRange().getValues(); //2D array of sheet1 cell values
var bg;
for(var i=1; i<data1.length; i++)
{
bg = sheet1.getRange(i+1, 2).getBackground();
if(bg == "#ff0000") //Add more colors in else if and else if you have 5-6 different colors, this one is for red
{
sheet2.getRange(i+1, 3).setValue("For Verification"); //Set value in corresponding row of sheet2
}
}
}
/**
* For to-be filled records in future, you can
* set a trigger of onEdit if you are manually
* filling sheet 1
**/
我做了这个脚本来更新一些颜色,但它可能会给你一个关于如何做的想法。
请记住,在 Google 表格中,x,y 矩阵始终为 x=row,然后 y=column。 因此,当您更新值时,您必须认为该对的第一个值是行,然后是列,以避免错误。
此外,getRange 是基于 1 的,而数组是基于 0 的。
最后, getBackground
操作非常昂贵,因为每次调用它都需要从工作表中获取数据,如果您将在多个单元格上运行脚本,那么最好使用getBackgrounds()
来获取所有的矩阵范围内的背景。
/** @OnlyCurrentDoc */
function calculateValues() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("origin")
var data = sheet1.getDataRange();
var values = data.getValues();
var bg = data.getBackgrounds()
Logger.log("Rows: " + values.length)
Logger.log("Columns: " + values[0].length)
for (var y = 0; y < values.length; y++) {
Logger.log("Row: " + (y+1) + " with length " + values[y].length)
for (var x = 0; x < values[y].length; x++) {
var i = x+1
var j = y+1
Logger.log("row, column: " + j + "," + i + " bg: " + bg[y][x])
if(bg[y][x] == "#34a853") { // green
sheet1.getRange(j,i).setValue(2)
} else if (bg[y][x] == "#fbbc04") { //yellow
sheet1.getRange(j,i).setValue(1)
} else if (bg[y][x] == "#d9d9d9") { //gray
sheet1.getRange(j,i).setValue(0)
} else if (bg[y][x] == "#6aa84f" ) { // green 2
sheet1.getRange(j,i).setBackground("#34a853")
sheet1.getRange(j,i).setValue(2)
} else if (bg[y][x] == "#f1c232" ) { // yellow 2
sheet1.getRange(j,i).setBackground("#fbbc04")
sheet1.getRange(j,i).setValue(1)
} else if (bg[y][x] == "#b7b7b7") { // gray 2
sheet1.getRange(j,i).setBackground("#d9d9d9")
sheet1.getRange(j,i).setValue(0)
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.