繁体   English   中英

在工作表中制作多个导入范围的数组

[英]Make array of multiple importrange in sheets

我用谷歌表格为我的公司举办了一场健身挑战赛。 每个团队都有自己的电子表格,我有一个汇总所有数据的电子表格。 我的一张床单是由这条线驱动的:

={IMPORTRANGE(Constants!B11,"TeamStats!A17:N"&(16+Constants!D11));
  IMPORTRANGE(Constants!B12,"TeamStats!A17:N"&(16+Constants!D12));
  IMPORTRANGE(Constants!B13,"TeamStats!A17:N"&(16+Constants!D13));
  IMPORTRANGE(Constants!B14,"TeamStats!A17:N"&(16+Constants!D14)); 
  IMPORTRANGE(Constants!B15,"TeamStats!A17:N"&(16+Constants!D15));
  IMPORTRANGE(Constants!B16,"TeamStats!A17:N"&(16+Constants!D16))}

这感觉真的很不雅和笨重,因为每次我添加一个团队时,我都需要复制+粘贴到行尾并更改为下一个数字。 我有更好的方法来导入这些范围吗?

根据 Krysztof 的评论,由于每张纸可能存在限制,因此不允许使用IMPORTRANGE ARRAYFORMULA (这实际上可以优化您的公式)。

我创建了一个 Apps 脚本,如果您愿意将其作为解决方案,它实际上可以自动为您更新公式:

代码:

function onEdit(e) {
  if(e.range.getColumn() == 2 && e.range.getRow() >= 11){
    // URL of spreadsheet containing Constants Sheet 
    var constantsURL = '<constants spreadsheet url>';
    // Access "Constants" sheet specifically
    var constantsSheet = SpreadsheetApp.openByUrl(constantsURL).getSheetByName("Constants");
    // Get last row of whole sheet
    var lastRow = constantsSheet.getLastRow();
    // get all urls in Constants sheet from range column B row 11 until last row of the sheet
    var sheetURLs = constantsSheet.getRange("B11:B" + lastRow).getValues();
    var data = [];

    sheetURLs.forEach(function(url, index) {
      // Per data found in column B, we add the formula IMPORTRANGE(Constants!B11,"TeamStats!A17:N"&(16+Constants!D11))
      // Incrementing the numbers 11  one at a time per row
      data.push("IMPORTRANGE(Constants!B" + (11 + index) + ",\"TeamStats!A17:N\"&(16+Constants!D" + (11 + index) + "))");
    });

    // Combine all data and make into formula 
    var formula = "={" + data.join(";\n") + "}";
    // Apply the formula to a specific cell you want to
    // Below is A1 for example
    SpreadsheetApp.getActiveSheet().getRange("A1").setFormula(formula);
  }
}

样品 Output:

输出

笔记:

  • 每次编辑 B11 列及以下的值时都会触发脚本(添加、删除或编辑值)
  • 确保在 Triggers 下安装onEdit ,因为简单的触发器会因权限而失败
  • 删除最后一行也将删除动态公式中的最后一个IMPORTRANGE
  • 您可以根据自己的条件进一步优化代码,但现在这将适用于您的情况(我假设大部分时间都是 append 行)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM