Here is a link to a sample sheet
我有一张纸的回答中等偏低。我需要将它们更改为数字,以便创建图表,因此我使用了switch功能。但是数据是动态的,因此它取决于有多少数据。.我可以从第一个数据集中获取set.formula进行更新,但只能使用单元格引用。我可以在公式中使用动态变量,以便如果有5个数据集时将复制公式5x,但更改行引用
我尝试将其更改为设置值,还尝试添加变量+ copyCell +
function weeklyReview()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Workzone Planning');
var sessionSheet = ss.getSheetByName('Daily Plan');
var calcSheet = ss.getSheetByName('Calc Sheet');
var chartSheet = ss.getSheetByName('WeeklyReviewCalcs');
var lastCol = sessionSheet.getLastColumn();
var numDays = sheet.getRange('f11').getValue();
var numSessions = sheet.getRange('c29').getValue();
var startFormula = chartSheet.getRange('c4').activate();
for (var a=0; a<numDays; a++)
{
var day = calcSheet.getRange(a+3, 1).getValue()
chartSheet.getRange('a1').setValue(day)
chartSheet.getActiveCell().setFormula ('=SWITCH(\'Daily
Plan\'!C15,"High", 2, "Medium", 1, "Low", 0, 0)');
chartSheet.getActiveCell().offset(1, 0).setFormula('=SWITCH(\'Daily Plan\'!C14, "High", 2, "Medium", 1, "Low", 0, 0)');
chartSheet.getActiveCell().offset(2, 0).setFormula('=SWITCH(\'Daily Plan\'!C19, "Yes", 1, "Half", -1, "No", -1, 0)');
chartSheet.getActiveCell().offset(3, 0).setFormula('=SWITCH(\'Daily Plan\'!C16, "High", 2, "Medium", 1, "Low", 0, 0)');
chartSheet.getActiveCell().offset(4, 0).setFormula('=SWITCH(\'Daily Plan\'!C17, "None", 2, "Some", 1, "Lots", 0, 0)');
chartSheet.getActiveCell().offset(5, 0).setFormula('=SWITCH(\'Daily Plan\'!C18, 100%, 2, 66%, 1, 33%, 0, 0)');
}
}
我希望它进入每日计划工作表的第15行进行第一次迭代,然后向下移动并移至第38行,依此类推……以了解正在使用的天数。
答案 0 :(得分:0)
示例:
var lastCell=sessionSheet.getRange("C14").getNextDataCell(SpreadsheetApp.Direction.DOWN);
Logger.log(lastCell.getA1Notation());
如果
lastCell
的值例如是C19
您知道您的第一个 数据范围从第14行到第19行。
示例:
var firstRow=14;
var rowNumber=lastCell.getRow()-firstRow;
for(var i=0; i<rowNumber.length;i++){
var row=i+14;
chartSheet.getActiveCell().offset(i, 0).setFormula('=SWITCH(\'Daily Plan\'!C'+row+', "High", 2, "Medium", 1, "Low", 0, 0)');
}