答案1
仔细检查了您的问题后,我确定您需要编写一个谷歌脚本来完成此操作。
您需要做的就是:打开 Google 脚本编辑器,创建一个新项目,将其粘贴到脚本底部,将“Reconciliation”重命名为您的电子表格的名称,然后保存。这onEdit()
是 Google 脚本中内置的触发器,用于在编辑后进行更新,这checkReceived()
是一个手动滚动的示例,可完成您想要的工作。我根据您提供的图像定制了这个“示例”。您将看到,您可以添加任意数量的项目,这将覆盖它们。您可以更改细节以匹配您需要的其他任何内容(即您还应该注意,我将主表称为“Master”),但这应该适合您。请让我知道进展如何。
function checkReceived() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//The following to ensures you don't run this on another spreadsheet
if(spreadsheet.getName()=="Reconciliation") //<--This is the name of the spreadsheet I used, change it for yours.
{
var maxIntervalSS = spreadsheet.getNumSheets();
var theMasterSheet = spreadsheet.getSheetByName("Master");
var masterSheetID = theMasterSheet.getIndex();
var sheets = spreadsheet.getSheets();
var thisRow = theMasterSheet.getRange(1,1); //Arbitrary for initialization
//Need to Clear existing master data.
theMasterSheet.getDataRange().clear();
//Will use a flag to repopulate header.
var firsttime= true;
//Iterates through each spreadsheet
for(var checkingSheetIterator = 0; checkingSheetIterator<maxIntervalSS; checkingSheetIterator++)
{
var currentSheet = sheets[checkingSheetIterator];
//Ignores the iteration if ID equals the master sheet
if(currentSheet.getIndex()!=masterSheetID)
{
//Getting currentSheet's data
var currentRange = currentSheet.getDataRange();
//Iterates through the currentSheet's data
for(var rows = 1; rows<=currentSheet.getLastRow(); rows++)
{
//Repopulating header on first time.
//"8" for column H, containing the Status
if(currentRange.getCell(rows,8).getValue()=="Received"|| firsttime) //<-Note this is your keyword and specified location; "8".
{ //Add to bottom of sheet
theMasterSheet.appendRow([currentRange.getCell(rows,1).getValue(),currentRange.getCell(rows,2).getValue(),
currentRange.getCell(rows,3).getValue(),currentRange.getCell(rows,4).getValue(),
currentRange.getCell(rows,5).getValue(),currentRange.getCell(rows,6).getValue(),
currentRange.getCell(rows,7).getValue(),currentRange.getCell(rows,8).getValue(),
currentRange.getCell(rows,9).getValue(),currentRange.getCell(rows,10).getValue(),
currentRange.getCell(rows,11).getValue()]);
firsttime=false;
}
}
}
}
}
};
function onEdit(){
checkReceived();
};
以下是电子表格设置的示例。请注意,电子表格的名称是 Reconciliation(图片顶部),页面底部的选项卡(即工作表)名为“Master”、“Project1”和“Project2”。请注意,我没有考虑条件格式,因为它不应该对结果产生任何影响。