我正在使用Google Spreadsheets,其中填充了Google表单的回复。现在,我有一个电子表格来自动着色包含"错误"通过比较单元格的值与每列的顶部单元格的响应(使用条件格式)。对于 CF到CH 列,我想设置为"得分"部分。
通过上面的图片,我手动说明了我的最终目标:
我希望能够为每个行计算具有特定背景颜色(在这种情况下为浅红色1 [#de6666])的单元格,并在 CH 。从那里开始,我计划使用这个数字计算原始分数&通过与总问题数量进行比较得出百分比。
我做了一些搜索,希望得到一个已经回答的类似问题可能对我的情况有所帮助,并找到了这两个问题:(1) &amp; (2)。< / p>
现在,我完全不熟悉编码技术,如果我不正确理解或需要额外帮助,我想请你耐心等待我。 我的问题是,有没有办法调整这些以使其能够执行我想要执行的操作?或者是否需要全新的自定义功能?
答案 0 :(得分:2)
我遇到了同样的问题,这是我的解决方案,适合我能看到你的需求。 它不完全通用,但只要你改变范围以满足你的需要它应该工作得很好。 我尽力解释那些令我困惑的部分,以便你可以根据需要进行调整。 祝你好运,希望这有帮助!
function countbackgrounds(){
var book = SpreadsheetApp.getActiveSpreadsheet();
var sheet = book.getActiveSheet();
var lastRow = sheet.getLastRow();
var cellColors = sheet.getRange(4, 1, lastRow-3, 57).getBackgrounds();//(startrow, startcolumn,numRows,numCols)
/*since you want all rows and columns before CF:CH, since CF is column 58, you want 57 columns.
//to exclude your headers you want to start on a certain row,
//be mindful of which row number you are starting on, it looks to me like 4,
//so subtract 'startrow-1' from 'lastRow' so you code doesnt continue past your entries. */
var colorY = "#de6666";
var count = 0;
for(var i = 0; i < cellColors.length; i++) {
var thisRow = sheet.getRange(i+4, 60 ); //get output cell for this row in CH
/*note: 'i' is an index number within the loop not the row number, if you are starting at another row
//you will need to change this, just add the 'startrow' number */
for(var j = 0; j < cellColors[0].length ; j++) {
if(cellColors[i][j] == colorY) {
count = count + 1;
};//end if statement
};//end for each cell in a row
thisRow.setValue(count);
count = 0;//reset count to 0 before next row
};//end for each row
};