我创建了一个公式来对正值进行排序。
=SORT(FILTER(A2:A, A2:A>0),1,1)
并将其转换为具有此公式定义的命名函数,并将其命名为
SORT_POSITIVE
=SORT(FILTER(range, range>0),sort_column,is_ascending)
像这样使用它。
=SORT_POSITIVE(A2:A,1,1)
它从内部排序函数中检索排序列,以及排序是否为升序。
当我没有将命名函数的 is_ascending 默认值设置为“0”或“1”以在命名函数中降序或升序时,是否有方法将其设置为“1”?
像这样使用
=SORT_POSITIVE(A2:A)
回顾:如果未提供命名函数参数,则使用默认值。
这称为 可选参数,它是 javascript 和 python 等主要编程语言中众所周知的功能。它也可用于内置函数。但不幸的是,它目前在 google-sheets 中不可用。 Microsoft 一年前在
excel中引入了
LAMBDA
。一段时间后,它还添加了LAMBDA 改进。引用一下,
LAMBDA 现在支持可选参数。要使用可选参数,您只需将可选名称括在“[]”中即可。
例如:
=LAMBDA(参数1, [参数2], IF(ISOMITTED(参数2), 参数1, 参数2))
如果省略 param2,此 lambda 将返回 param1 的值,否则返回 param2 的值。
对于与 Excel 的功能对等,我希望 Google 能够效仿。但是,目前,
ISOMITTED
和[]
(可选参数)都不可用。
通过解决方法,您可以通过在命名函数中通过 IF(ISBLANK()) 提供后备值来接近所需的解决方案。
只有当您的名称函数有超过 1 个参数时,这才有效(否则 Sheets 将返回错误)。
替换您的变量,例如:
sort_column
检查它们是否为空,如果为空则返回默认值:
IF(ISBLANK(sort_column),DEFAULT_VALUE,sort_column)
在这种情况下,结果函数是:
=SORT(FILTER(range,range>0),IF(ISBLANK(sort_column),1,sort_column),IF(ISBLANK(is_ascending),1,is_ascending))
使用该功能:
=SORT_POSITIVE(A2:A,,)
我还使用它来进行可选的验证、错误检查等,这些可以在原型设计时通过参数启用。