如果未指定,则为命名函数参数提供默认值

问题描述 投票:0回答:2

我创建了一个公式来对正值进行排序。

=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)

制作示例表和命名函数的副本

回顾:如果未提供命名函数参数,则使用默认值。

google-sheets google-sheets-formula optional-parameters named-function
2个回答
4
投票

这称为 ,它是 等主要编程语言中众所周知的功能。它也可用于内置函数。但不幸的是,它目前在 中不可用。 Microsoft 一年前在

excel
中引入了 。一段时间后,它还添加了LAMBDA 改进。引用一下,

LAMBDA 现在支持可选参数。要使用可选参数,您只需将可选名称括在“[]”中即可。

例如:

=LAMBDA(参数1, [参数2], IF(ISOMITTED(参数2), 参数1, 参数2))

如果省略 param2,此 lambda 将返回 param1 的值,否则返回 param2 的值。

对于与 Excel 的功能对等,我希望 Google 能够效仿。但是,目前,

ISOMITTED
[]
(可选参数)都不可用。


0
投票

通过解决方法,您可以通过在命名函数中通过 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,,)

我还使用它来进行可选的验证、错误检查等,这些可以在原型设计时通过参数启用。

复制更新后的表格文件

© www.soinside.com 2019 - 2024. All rights reserved.