我正在尝试创建一个自动归档函数,该函数获取工作表条目的日期,每行的第一列,并将其与当前日期进行比较,如果当前日期距离条目有n周,则将其移动到归档工作表。我拥有的代码适用于某些行,但在某些行上它返回“源范围的坐标超出了工作表的维度。”错误。电子表格的某些行在最后一个活动列中有一个条目,而其他行则留空,所以我不知道这是否可能是错误的来源,但我尝试在没有这些列的范围内运行程序,我仍然得到了一个错误。非常感谢任何帮助!这是我的功能:
function compareDates(){
//change variable depending on how many weeks you want before archived
var numWeeks = 2;
//if sheet names are different change them here
var formDataName = "Sheet1";
var archiveName = "Archived";
//gets date 2 weeks from current date
var date = new Date()-(3600000*24*7*numWeeks);
//gets sheet that form data is on
var sheetForm = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(formDataName);
//gets row & column numbers from form data sheet
var columnNum = sheetForm.getLastColumn();
var rowNum = sheetForm.getLastRow();
//gets sheet that archive is on
var sheetArchive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(archiveName);
var rangeForm = sheetForm.getRange(2,1,rowNum,1);
//iterates through rows
for(var i = 2; i<=rowNum; i++){
//gets cell with timestamp
var cell = rangeForm.getCell(i,1).getValue();
//compares timestamp to two weeks value
if(cell.valueOf()<date.valueOf()){
//gets outdated row
var range = sheetForm.getRange(i,1,1,columnNum);
//gets where the row needs to move in archive
var tar = sheetArchive.getRange(sheetArchive.getLastRow()+1, 1, 1, columnNum);
//moves row to archive
range.copyTo(tar);
//deletes row in form data sheet
sheetForm.deleteRow(i);
}
}
sheetArchive.sort(1, false);
}
尝试以下操作:
function compareDates()
{
var numWeeks = 2;
var formDataName = "Sheet1";
var archiveName = "Archived";
var date = new Date().valueOf()-(numWeeks*7*24*60*60*1000);
var sheetForm = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(formDataName);
var columnNum = sheetForm.getLastColumn();
var rowNum = sheetForm.getLastRow();
var sheetArchive = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(archiveName);
var rangeForm = sheetForm.getRange(2,1,rowNum-1,1);
var vA=rangeForm.getValues();
for(var i=vA.length-1;i>=0;i--)
{
if(new Date(vA[i][0]).valueOf()<date.valueOf())
{
var range = sheetForm.getRange(i+2,1,1,columnNum);
var tar = sheetArchive.getRange(sheetArchive.getLastRow()+1, 1, 1, columnNum);
range.copyTo(tar);
sheetForm.deleteRow(i + 2);
}
}
sheetArchive.sort(1, false);
}
试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误
我有第一部分,但在挣扎第二部分:
对所有人,谢谢你提前的时间。 我们已经有了工作代码,可以在Excel中用vb将数据从一个wrksht移动到另一个wrksht。 如有任何帮助,我们将不胜感激。 2/22/19 以下是我的回应。 在第二个工作簿上,在第一列上进行搜索时,工作表称为orderlog 谢谢
我在工作簿中的工作表上有一个按钮,工作簿中有一个数据透视表,名为“保修模板.xlsm”。我希望该按钮复制从A5开始的第一列数据,并将该列粘贴到另一个名为“QA Matrix Template.xlsm”的工作簿中。我希望复制的数据在列的最后一个空白行结束,我希望粘贴数据的范围也粘贴在从D12开始的第一个空白行上。 我得到下标错误:'1004',我不知道为什么。它与我的&变量有关。如果我设置静态范围
使用Google Sheets,我试图制作一个复制按钮,一旦点击它,就应该启动脚本代码,以便复制特定列中的一些值(例如,从特定行开始的20个特定单元格),并将它们粘贴到下一个空列中另一张纸(纸2)从特定的一行开始。 每次按下按钮,它都会将结果复制到工作表2中的下一个空列,这样就不会复制到上一个粘贴的结果上。 表1中这些单元格的值或文本:C4、C5、C6、C7、C8、C9、C10、C11、C12、C