谷歌工作表=间隔()的单元格范围

时间:2018-02-22 10:04:23

标签: google-apps-script google-sheets google-sheets-formula

我想知道是否有一个标准函数来遍历一系列单元格并在其上应用间接函数。 我正在尝试按商店,月份和类别构建一张表来支付我的费用,但由于我的功能看起来像

,因此很难扩展。
  

=INDIRECT(""&$B$3&"!"&concat(A12,$C$1))+INDIRECT(""&$B$4&"!"&concat(A12,$C$1))+INDIRECT(""&$B$5&"!"&concat(A12,$C$1))+INDIRECT(""&$B$6&"!"&concat(A12,$C$1))

其中B3:B7是我的商店,它更容易阅读:

  

=forEach(B3:B7, INDIRECT(""& B3:B7 &"!"&concat(A12,$C$1)))

或类似的东西。

我已尝试过使用arrayFormula,但在这种情况下不起作用,因为我不是试图在2个相同大小的范围上应用函数,而是在单个值范围内查找

简明扼要的问题: 是否存在现有功能,或者我是否必须尝试编写自己的功能?

1 个答案:

答案 0 :(得分:2)

我找到了针对特定问题的特定用例解决方案。 发布完整性,但仍然想知道其他人是否有更好的东西。

function indirectLoop(range, cellReference) {
  var currentCell = SpreadsheetApp.getActiveSheet().getActiveCell();
  var numberOfStores = range.length;

  var total = 0;

  var debugString = "";
  var currentStore;
  var storeSheet;
  var storeCell;
  for (var i = 0; i < numberOfStores; i++) {
    currentStore = range[i];
    storeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(currentStore);
    storeCell = storeSheet.getRange(cellReference);

    total = total + storeCell.getValue();
    //debugString += currentStore + ":" + storeCell.getValue() + "- ";

  }
  return(total);
}