Indexing 如何避免在电子表格=索引(FILTER(),FILTER())表达式中重复我自己?
我有一个电子表格公式,其中我在索引函数中使用了两次完全相同的过滤函数。有没有办法避免重复我自己和/或更简单的表达方式 表达式如下所示(分成多行以获得更清晰的信息): 表达式的作用是返回行中最右边的非空列的标题,只要该列是Indexing 如何避免在电子表格=索引(FILTER(),FILTER())表达式中重复我自己?,indexing,filter,google-sheets,dry,Indexing,Filter,Google Sheets,Dry,我有一个电子表格公式,其中我在索引函数中使用了两次完全相同的过滤函数。有没有办法避免重复我自己和/或更简单的表达方式 表达式如下所示(分成多行以获得更清晰的信息): 表达式的作用是返回行中最右边的非空列的标题,只要该列是ANIM、COMP或发送到编辑的中的一列 请参阅本手册第Q列中的公式 由于FILTER函数两次都完全相同,如果我可以使用一个变量,它可以像这样重新编写: range1 = FILTER(.....); INDEX(range1, COLUMNS(range1)); =REGEX
ANIM
、COMP
或发送到编辑的中的一列
请参阅本手册第Q列中的公式
由于FILTER函数两次都完全相同,如果我可以使用一个变量,它可以像这样重新编写:
range1 = FILTER(.....); INDEX(range1, COLUMNS(range1));
=REGEXEXTRACT(JOIN("|",FILTER($A$1:$P$1, Regexmatch($A$1:$P$1,"ANIM|SENT TO EDIT|COMP"), NOT (ISBLANK(A2:P2)))),"([^|]+)$")
为了避免重复我的筛选表达式,是否有任何方法可以执行类似操作?或者类似操作?您的想法是正确的,避免重复长的子公式的方法是将它们从公式中移出,并以某种方式调用结果。在某些情况下,可以使用对显示结果的范围的引用,但对于返回动态数组的公式,自定义函数可能是更好的选择
例如:
假设你搬走了
FILTER($A$1:$P$1, ($A$1:$P$1 = "ANIM")+($A$1:$P$1 = "COMP")+($A$1:$P$1 = "SENT TO EDIT"),
NOT (ISBLANK(A2:P2)))
要干燥!A1
(别忘了在前面加上=
)
以下只是一个“mcve”。假设te干纸仅包含上述公式:
function headers(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets().getSheeyByName('dry');
return sheet.getDataRange().getValues();
}
将原始公式替换为以下公式:
=INDEX(headers(dry!A1:P1),COLUMNS(headers(dry!A1:P1))
注意:使用干燥!A1:P1作为headers()的参数,每次子公式的结果更改时,都会强制重新计算
另请参见:您可以尝试以下方法:
range1 = FILTER(.....); INDEX(range1, COLUMNS(range1));
=REGEXEXTRACT(JOIN("|",FILTER($A$1:$P$1, Regexmatch($A$1:$P$1,"ANIM|SENT TO EDIT|COMP"), NOT (ISBLANK(A2:P2)))),"([^|]+)$")
使用是一种像文本一样处理数组的方法。我希望避免使用外部函数;在这种情况下,我想我宁愿重复我自己,也不愿使用函数。:-)如果生成的数组大小始终相同,则可以避免使用自定义函数。否则,如果您不想使用自定义函数,恐怕您应该重复一下。