我正在尝试执行以下操作: 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);
}
}
}
答案 0 :(得分:0)
此修改如何?在此修改中,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);
}
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。