google 工作表 =indirect() 在单元格范围内
google sheets =indirect() on range of cells
我想知道是否有一个标准函数可以遍历一系列单元格并对其应用间接函数。
我正在尝试构建一个 sheet 来按商店、月份和类别来支付我的费用,但到目前为止很难扩展,因为我有一个看起来像
的函数
=INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))
其中 B3:B7 是我的商店,阅读起来会容易得多:
=forEach(B3:B7, INDIRECT(""& B3:B7 &"!"&concat(A12,$C)))
或类似的东西。
我试过使用 arrayFormula,但在这种情况下不起作用,因为我不是试图在 2 个相同大小的范围内应用函数,而是在单个值范围内查找
简明问题:
是否有现有的功能,或者我必须尝试编写自己的代码?
我找到了针对我的特定问题的非常 use-case 的特定解决方案。
发帖是为了完整性,但仍然想知道是否还有其他人有更好的东西。
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);
}
我想知道是否有一个标准函数可以遍历一系列单元格并对其应用间接函数。 我正在尝试构建一个 sheet 来按商店、月份和类别来支付我的费用,但到目前为止很难扩展,因为我有一个看起来像
的函数
=INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))+INDIRECT(""&$B&"!"&concat(A12,$C))
其中 B3:B7 是我的商店,阅读起来会容易得多:
=forEach(B3:B7, INDIRECT(""& B3:B7 &"!"&concat(A12,$C)))
或类似的东西。
我试过使用 arrayFormula,但在这种情况下不起作用,因为我不是试图在 2 个相同大小的范围内应用函数,而是在单个值范围内查找
简明问题: 是否有现有的功能,或者我必须尝试编写自己的代码?
我找到了针对我的特定问题的非常 use-case 的特定解决方案。 发帖是为了完整性,但仍然想知道是否还有其他人有更好的东西。
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);
}