我正在尝试找到一种将信息从一张纸复制到另一张纸的方法。我知道如何从工作表中查找要复制的信息,但是在查找要复制到的工作表时遇到了麻烦。我想根据原始工作表中的值复制到工作表中。
我在C列中有一个姓名列表,例如。 John,Mark和Will从第40行开始。然后,我想将John的信息行复制到标题为“ John”的表中,然后将Mark的信息复制到标题为“ Mark”的表中,以此类推,以便总结每个人的信息在自己的表上。我在使用C列中找到的值(人员姓名)时遇到麻烦,然后使用该值查找具有协调名称的工作表。
function CopyInfo() {
var CopyFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Summary");
var ColumntoSearch = 3;
var LastRow = CopyFrom.getLastRow();
//Gets column to search for names to compare
var Range = CopyFrom.getRange(40, ColumntoSearch, LastRow, 1);
var Values = Range.getValues();
//Sets the amount of data to copy over
var NumberofColumns = 11;
var NumberofRows = 1;
//Compares all the names in the Summary sheet
var d=0;
for(var i=0;i<Values.length;i++) {
var Name = CopyFrom.getRange(i-d+40, 3);
var CopyTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(Name);
if(Name == ????????){
var RangetoCopy=CopyFrom.getRange(i-d+40,1,NumberofRows,NumberofColumns);
var DestRange=CopyTo.getRange(CopyTo.getLastRow()+1,1,NumberofRows,NumberofColumns);
RangetoCopy.copyTo(DestRange);
d++;
}
}
}
答案 0 :(得分:0)
Summary
工作表中“ C”列中检索到的工作表名称,将Summary
工作表中的值复制到每个工作表中。Summary
工作表的第45行具有值a45, b45, c45, d45, e45, f45, g45, h45, i45, j45, k45
时,这些值将被复制到工作表名称c45
的最后一行的正下方。 li>
如果我的理解是正确的,那么该修改如何?我认为您的脚本几乎是正确的。所以我稍微修改了您的脚本。
function CopyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Added
var CopyFrom = ss.getSheetByName("Summary"); // Modified
var ColumntoSearch = 3;
var LastRow = CopyFrom.getLastRow();
//Gets column to search for names to compare
var Range = CopyFrom.getRange(40, ColumntoSearch, LastRow, 1);
var Values = Range.getValues();
//Sets the amount of data to copy over
var NumberofColumns = 11;
var NumberofRows = 1;
//Compares all the names in the Summary sheet
// var d=0; // Removed
for (var i = 0; i < Values.length; i++) {
var Name = Values[i][0]; // Modified
var CopyTo = ss.getSheetByName(Name); // Modified
if (Name) { // Modified
if (!CopyTo) CopyTo = ss.insertSheet(Name); // Added
var RangetoCopy = CopyFrom.getRange(i + 40, 1, NumberofRows, NumberofColumns); // Modified
var DestRange = CopyTo.getRange(CopyTo.getLastRow() + 1, 1, NumberofRows, NumberofColumns);
RangetoCopy.copyTo(DestRange);
// d++; // Removed
}
}
}
在此修改的脚本中,如果找不到工作表名称,则会插入工作表名称的新工作表。如果您不想插入新的工作表,请将if(!CopyTo) CopyTo = ss.insertSheet(Name)
替换为以下脚本。
if (CopyTo) {
var RangetoCopy = CopyFrom.getRange(i + 40, 1, NumberofRows, NumberofColumns);
var DestRange = CopyTo.getRange(CopyTo.getLastRow() + 1, 1, NumberofRows, NumberofColumns);
RangetoCopy.copyTo(DestRange);
}
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。