如何根据多个变量自动更改 Google 工作表中的单元格
How to Automatically Change a Cell in Google Sheets Based on Multiple Variables
我正在努力在 Google Sheet 秒内制定时间表,但我只有最后一项任务无法解决。这是我想要完成的示例。
对于第 8-12 行(针对员工 1-5),我需要一个脚本来查找包含 A 或 A-10 的每个单元格。如果这些 A 或 A-10 班次落在 1-15(每月的日期在第 5 行......如下图所示),则应将其更改为 Aa 或 Aa-10。如果他们落在月底的 16 日,他们应该是 Ap 或 Ap-10。 R和I班次也是如此。
这是我上面给出的示例中 Google Sheet 的屏幕截图:
如有任何帮助,我们将不胜感激!谢谢!
这是一个可以进行这些更改的脚本。它只更改第 8 - 12 行并假定日期在第 5 行。
function changeValues() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("8:12");
var dates = sheet.getRange("5:5").getValues();
var values = range.getValues();
for(var row = 0; row < values.length; row++) {
for(var column = 1; column < values[row].length; column++) {
var day = Number(dates[0][column].replace(/[^0-9]/g, ""));
var value = values[row][column];
if(day >= 1 && day <= 15) {
if(value === "A") value = "Aa";
else if(value === "A-10") value = "Aa-10";
} else if(day > 15) {
if(value === "A") value = "Ap";
else if(value === "A-10") value = "Ap-10";
}
values[row][column] = value;
}
}
range.setValues(values);
}
我正在努力在 Google Sheet 秒内制定时间表,但我只有最后一项任务无法解决。这是我想要完成的示例。
对于第 8-12 行(针对员工 1-5),我需要一个脚本来查找包含 A 或 A-10 的每个单元格。如果这些 A 或 A-10 班次落在 1-15(每月的日期在第 5 行......如下图所示),则应将其更改为 Aa 或 Aa-10。如果他们落在月底的 16 日,他们应该是 Ap 或 Ap-10。 R和I班次也是如此。
这是我上面给出的示例中 Google Sheet 的屏幕截图:
如有任何帮助,我们将不胜感激!谢谢!
这是一个可以进行这些更改的脚本。它只更改第 8 - 12 行并假定日期在第 5 行。
function changeValues() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("8:12");
var dates = sheet.getRange("5:5").getValues();
var values = range.getValues();
for(var row = 0; row < values.length; row++) {
for(var column = 1; column < values[row].length; column++) {
var day = Number(dates[0][column].replace(/[^0-9]/g, ""));
var value = values[row][column];
if(day >= 1 && day <= 15) {
if(value === "A") value = "Aa";
else if(value === "A-10") value = "Aa-10";
} else if(day > 15) {
if(value === "A") value = "Ap";
else if(value === "A-10") value = "Ap-10";
}
values[row][column] = value;
}
}
range.setValues(values);
}