将公式复制到A列的最后一行(在工作表中)



我是非常新的使用宏在谷歌表,并努力复制容易的VBA代码

我试图找到列A的最后一行,然后将公式添加到各种列并向下复制到最后一行。在VBA中,它像**("B2:B" & Lastrow).select一样简单然而,这并不是直截了当的。我发现并操作了以下内容,但是它总是转到最后一行而不是数据的最后一行

var sheetName = "Week 1";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
spreadsheet.getRange('E7').activate()
.setFormula('=iferror(if(match($B7,Names,0),VLOOKUP($B7,Special,3,false),0),0)');
var lr = sheet.getLastRow();
var fillDownRange = sheet.getRange(7, 5, lr-1);
sheet.getRange('e7').copyTo(fillDownRange);

需要对上面做些什么,以便它只填充到A列的最后一行数据

非常感谢所有人的帮助

编辑-我已经更新了代码,(显然是错误的)并添加到工具下的s/sheet,复制标签

var sheetName = "Week 1";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);

var lastRow = sheet.getLastRow();
var range = sheet.getRange("A7" + lastRow);
if (range.getValue() !== "") {
return lastRow;
} else {
return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
}

var lr = getLastDataRow(sheet,"A")

//Saturday Formula
spreadsheet.getRange('E7').activate()
.setFormula('=iferror(if(match($B7,Names,0),VLOOKUP($B7,Special,3,false),0),0)');
var fillDownRange = sheet.getRange(7, 5, lr-1);
sheet.getRange('E7').copyTo(fillDownRange);

在这两行之间是一个灯泡,表示无法访问的代码,Var = lr**之后的所有内容都是灰色的

}

var lr = getLastDataRow(sheet,"A")

第一个代码的更正

function myFunction() {
var sheetName = "Week 1";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
sheet.getRange('E7').setFormula('=iferror(if(match($B7,Names,0),VLOOKUP($B7,Special,3,false),0),0)');
var lr= sheet.getRange('A7').getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()
var fillDownRange = sheet.getRange(7, 5, lr-6,1);
sheet.getRange('E7').copyTo(fillDownRange);
}

代替varlr = sheet.getLastRow();,试试

lr = sheet.getRange('A1').getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()

如果需要,将A改为E。

  • edit:将A1改为A7, A4和A6为空。

如果有不连续的值,首选

function getLastDataRow(sheet,col) {
// col in letter
var lastRow = sheet.getLastRow();
var range = sheet.getRange(col + lastRow);
if (range.getValue() !== "") {
return lastRow;
} else {
return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
}              
}

lr = getLastDataRow(sheet,"A")

相关内容

最新更新