Вы можете использовать этот скрипт:
function SNAME(option) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet()
var thisSheet = sheet.getName();
if(option === 0){ // ACTIVE SHEET NAME =SNAME(0)
return thisSheet;
}else if(option === 1){ // ALL SHEET NAMES =SNAME(1)
var sheetList = [];
ss.getSheets().forEach(function(val){
sheetList.push(val.getName())
});
return sheetList;
}else if(option === 2){ // SPREADSHEET NAME =SNAME(2)
return ss.getName();
}else{
return "#N/A"; // ERROR MESSAGE
};
};
function onEdit() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Master Sheet');
var src = sheet.getRange("A1");
var str = src.getValue();
var cell = sheet.getRange("A2");
cell.setFormula(str);
}
, затем вставьте его в А1 вашего основного листа:
=ARRAYFORMULA("=ARRAYFORMULA(QUERY({"&TEXTJOIN("; ", 1,
FILTER(SNAME(1), SNAME(1)<>SNAME(0))&"!A2:B, "&
FILTER(SNAME(1), SNAME(1)<>SNAME(0))&"!C2:C&"&
FILTER(SNAME(1), SNAME(1)<>SNAME(0))&"!A1")&
"}, ""select Col1,max(Col2) where Col1 is not null group by Col1 pivot Col3""))")
![0](https://i.stack.imgur.com/5Dwxi.png)
это покроет все ваши потребности не редактировать формулу, добавляя ссылки, если добавляются новые листы. единственный недостаток - это пересчет скрипта имени листа ... для этого вам нужно разобрать формулу А1, например, добавив '
перед ведущим =
, нажав ввод, а затем удалив ее, чтобы исправить формулу