tl;dr:如何使两个范围作为一个函数的参数出现?例如,我想查看 E 列中的每个单元格except E5:
=MY_FUNCTION( somehowjoin( E1:E4, E6:E ) )
背景
我正在 Google Sheets 中编写项目跟踪器,例如 Microsoft Project。我有一个Google 表格中的自定义函数 https://stackoverflow.com/q/35509684/405017这使我可以通过查看其所依赖的所有任务的最大结束日期来计算各种任务的开始日期:
=MAX_LOOKUP( G9, A:A, I:I )
However, the end date for this task is then calculated based on the start date, and that end date is in the column with all end dates that are examined. As a result, I have a circular dependency.
![enter image description here](https://i.stack.imgur.com/QgOpR.png)
因此,我想为每一行编写公式以跳过当前行,例如:
=MAX_LOOKUP( G9, A1:A8 + A10:A, I1:I8 + I10:I )
FWIW我当前的解决方法是重写自定义函数的签名,如下所示:
=MAX_LOOKUP_SKIPROW( G9, ROW(), "A", "I" )
并使用以下命令手动构造该函数内的两个范围:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var keys1 = sheet.getRange(keyCol+"1:"+keyCol+(skipRow-1)).getValues();
var vals1 = sheet.getRange(valCol+"1:"+valCol+(skipRow-1)).getValues();
var keys2 = sheet.getRange(keyCol+(skipRow+1)+":"+keyCol).getValues();
var vals2 = sheet.getRange(valCol+(skipRow+1)+":"+valCol).getValues();
这是一个功能性的解决方案,但使功能变得更加特殊。我不认为这是对这个更普遍的连接范围问题的“答案”。