我正在尝试执行以下操作:1)检查A列中已填充的行数; 2)检查G列中填充了多少行; 3)将公式从列G的最后一个填充行拖到剩余的空白单元格中。
例如,如果在A列中填充了15行,但是G列只有10个包含公式的单元格,我想将公式从单元格G10向下拖动到G15(假设G11-15全部为空)
下面是我的代码,由于某种原因它无法正常工作(当我运行时,它仍然卡在“准备执行...”屏幕中)
任何帮助深表感谢!!
function dragdown() {
var sh=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastpopulatedrowForm = sh.getRange("A1:A").getLastRow();
var lastpopulatedrowManual = sh.getRange("G1:G").getLastRow();
for (var i=1;i<=lastpopulatedrowForm;i++) {
var emptyrange= sh.getRange(lastpopulatedrowManual, 6, i, 1);
if (emptyrange.isBlank()) {
var copyformulacell = sh.getRange(lastpopulatedrowManual,6,1,1);
var getformula = copyformulacell.getFormulaR1C1();
emptyrange.setFormula(getformula);
}
}
}
这个修改怎么样?在此修改中,copyTo()
用于复制列“G”的最后一行的公式。修改后的脚本流程如下。请将此视为几个答案中的一个。
function dragdown() {
var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastpopulatedrowForm = sh.getRange("A1:A").getValues();
var lastpopulatedrowManual = sh.getRange("G1:G").getValues();
var lastRowOfColA = 0;
var lastRowOfColG = 0;
for (var i = lastpopulatedrowForm.length - 1; i >= 0; i--) {
if (lastRowOfColA === 0 && lastpopulatedrowForm[i] != "") {
lastRowOfColA = i + 1;
}
if (lastRowOfColG === 0 && lastpopulatedrowManual[i] != "") {
lastRowOfColG = i + 1;
// break; // If lastRowOfColA is always larger than lastRowOfColG, you can use this line.
}
}
if (lastRowOfColA > lastRowOfColG) {
var src = sh.getRange(lastRowOfColG, 7);
var dst = sh.getRange(lastRowOfColG + 1, 7, lastRowOfColA - lastRowOfColG, 1);
src.copyTo(dst, SpreadsheetApp.CopyPasteType.PASTE_FORMULA);
}
}
如果我误解了你的问题并且这不是你想要的结果,我道歉。