Изучив ваш вопрос чуть ближе, я решил, что для этого вам нужно написать скрипт Google.
Все, что вам нужно сделать, это: открыть редактор скриптов Google, создать новый проект, вставить его в конец скрипта, переименовать "Согласование", чтобы оно соответствовало названию вашей электронной таблицы, а затем сохранить его. onEdit()
- это триггер, встроенный в скрипты Google, который выполняет работу по обновлению после редактирования, а checkReceived()
- это ручной пример, который выполняет ту работу, которую вы ищете. Я адаптировал этот "пример" к вашему изображению. Вы увидите, что вы можете добавить столько проектов, сколько захотите, и это будет охватывать их точно так же. Вы можете изменить данные так, чтобы они соответствовали всем, что вам нужно (т.е. вы также должны заметить, что я назвал мастер-лист "Мастер"), но это должно работать для вас. Пожалуйста, дайте мне знать, как это происходит.
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();
};
Ниже приведен пример настройки электронной таблицы. Обратите внимание, что имя электронной таблицы - "Согласование" (вверху рисунка), а вкладки (т. Е. Листы) внизу страницы называются "Мастер", "Проект1" и "Проект2". Обратите внимание, что я не беспокоился об условном форматировании, поскольку оно не должно иметь никакого отношения к результату.