我有一个电子表格,我想获取一系列数据并对其进行操作以使其外观不同。我在想我会设置多个循环
1 - 获取主要学生数据(A2:I26)并将其添加到新工作表中。
2-然后循环测试标题的范围,例如。 A,B,C等,并添加学生详细信息。
3-然后另一个循环来获取每个测试标题下的分数范围,并在测试名称后添加它们。
我开始编写一个获取工作表范围等的脚本,但我不确定如何添加循环。
仅供参考 - 我需要转换的一些表格的分数比只有A,B,C的分数更多...我需要处理的一些表格可能只有A分数,有些可能有AE等分数。
感谢您提供的任何帮助。
布兰登
***下面的图片和简单的脚本
使用脚本使其看起来像这样:
{{1}}
答案 0 :(得分:0)
我似乎找到了答案,所以我想我会发布它。相应地重新排列纸张的循环看起来像这样。我确信有更快的方法,但这就是我想出来的。
function dataReport() {
var thisSS = SpreadsheetApp.getActiveSpreadsheet(),
classData = thisSS.getSheets()[3],
dataLastRow = classData.getLastRow(),
Avals = classData.getRange("A1:A").getValues(),
Alast = Avals.filter(String).length,
classDataRange = classData.getRange(3, 1,Alast, 9),
standardCols = classData.getRange("J2:2").getValues(),
arrayOfStandards = standardCols.join().split(","),
filtArr = arrayOfStandards.filter(Boolean);
var dataArray = classDataRange.getValues();
for(var i=0; i < filtArr.length; i++){
var reportSheet = thisSS.getSheets()[4];
var reportSheetNewRow = reportSheet.getLastRow() +1;
var newDataRange = reportSheet.getRange(reportSheetNewRow, 1,Alast, 9);
var avgValues = classData.getRange(3, 10+i, Alast, 1);
var avgArray = avgValues.getValues();
var newAvgRange = reportSheet.getRange(reportSheetNewRow, 11,Alast, 1);
newDataRange.setValues(dataArray);
newAvgRange.setValues(avgArray);
for (var j=0, x = dataArray.length; j<x; j++){
reportSheet.getRange(reportSheetNewRow + j, 10).setValue(filtArr[i]);
}
}
}
&#13;