将公式添加到列中的空白单元格
Adding a formula to blank cells within a column
function copyformula(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formrange = ss.getRange("J1");
var formval = formrange.getValues();
var sourceSheets = ss.getSheets();
for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
var range = ss.getRange("J3:J1000");
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
if (values[i][0] == '') {
var cell = range.offset(i, 0, 1, 1);
cell.setValues(formval);
Utilities.sleep(750); //Edit value to adjust amount of pause between function calls (time is in milliseconds). Make it long enough to avoid #error, but not too long to save time.
}
}
}
}
您好,目的是检查第 J3:J1000 列中的空白单元格,(需要查看多张纸)如果有空白单元格,请将其替换为 J1 中的公式(这将出现在所有表格上)。我需要它来复制 J1 中的公式并粘贴它,因此它会更改所有单元格引用。示例:假设 J307 为空,公式从 J1 复制并粘贴到 J307,但所有 If 等现在都基于 J307 及其周围的其他单元格值。这将设置为与 google 触发器一起使用(更改时)
任何帮助将不胜感激:)。目前上面的脚本没有做任何事情并且超时。
- 您想将每个 sheet 单元格 "J1" 中的公式放到 "J".
列的空单元格中
- 您想在将公式放入单元格时将行号反映到公式中。
- 您想检查 sheet 索引从 2 到最后一个索引。
- 您想使用 Google Apps 脚本实现此目的。
我能像上面那样理解。如果我的理解是正确的,那么这个答案呢?请将此视为几个可能的答案之一。
示例脚本:
function copyformula(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheets = ss.getSheets();
for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
var sheet = sourceSheets[sheetNumber];
var values = sheet.getRange("J3:J" + sheet.getLastRow()).getValues(); // Modified
var formula = sheet.getRange("J1");
for (var i = 0; i < values.length; i++) { // Modified
if (!values[i][0]) { // Modified
formula.copyTo(sheet.getRange(`J${i + 3}`), SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
}
}
}
}
- 为了将行号反映到复制的公式中,我使用了
copyTo
。
- 在这种情况下,检查数据范围的第3行到最后一行。
- 如果不想使用V8,请将
sheet.getRange(`J${i + 3}`)
修改为sheet.getRange("J" + (i + 3))
。
参考:
function copyformula(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formrange = ss.getRange("J1");
var formval = formrange.getValues();
var sourceSheets = ss.getSheets();
for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
var range = ss.getRange("J3:J1000");
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
if (values[i][0] == '') {
var cell = range.offset(i, 0, 1, 1);
cell.setValues(formval);
Utilities.sleep(750); //Edit value to adjust amount of pause between function calls (time is in milliseconds). Make it long enough to avoid #error, but not too long to save time.
}
}
}
}
您好,目的是检查第 J3:J1000 列中的空白单元格,(需要查看多张纸)如果有空白单元格,请将其替换为 J1 中的公式(这将出现在所有表格上)。我需要它来复制 J1 中的公式并粘贴它,因此它会更改所有单元格引用。示例:假设 J307 为空,公式从 J1 复制并粘贴到 J307,但所有 If 等现在都基于 J307 及其周围的其他单元格值。这将设置为与 google 触发器一起使用(更改时)
任何帮助将不胜感激:)。目前上面的脚本没有做任何事情并且超时。
- 您想将每个 sheet 单元格 "J1" 中的公式放到 "J". 列的空单元格中
- 您想在将公式放入单元格时将行号反映到公式中。
- 您想检查 sheet 索引从 2 到最后一个索引。
- 您想使用 Google Apps 脚本实现此目的。
我能像上面那样理解。如果我的理解是正确的,那么这个答案呢?请将此视为几个可能的答案之一。
示例脚本:
function copyformula(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheets = ss.getSheets();
for( sheetNumber = 2; sheetNumber < sourceSheets.length; sheetNumber++) {
var sheet = sourceSheets[sheetNumber];
var values = sheet.getRange("J3:J" + sheet.getLastRow()).getValues(); // Modified
var formula = sheet.getRange("J1");
for (var i = 0; i < values.length; i++) { // Modified
if (!values[i][0]) { // Modified
formula.copyTo(sheet.getRange(`J${i + 3}`), SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
}
}
}
}
- 为了将行号反映到复制的公式中,我使用了
copyTo
。 - 在这种情况下,检查数据范围的第3行到最后一行。
- 如果不想使用V8,请将
sheet.getRange(`J${i + 3}`)
修改为sheet.getRange("J" + (i + 3))
。