首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google电子表格中计算作为参数传递给自定义函数的条件

在Google电子表格中计算作为参数传递给自定义函数的条件
EN

Stack Overflow用户
提问于 2016-04-22 15:08:11
回答 1查看 91关注 0票数 1

我想创建一个自定义函数,它像FILTER()函数那样接受条件,例如:

代码语言:javascript
复制
LARGEST_STREAK(Data, Winnings > 0)
LARGEST_STREAK(Data, Winnings > 0, Sports = "Football")

(数据、奖金和体育项目被命名为范围)。

你有这样做的函数的例子吗?最好的方法是FILTER()函数的源代码,但我甚至不确定是否Javascript运行在buit函数后面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-22 16:57:47

自定义函数接收的参数不是范围,它们是JavaScript值或双数组。例如,customfunction(A1:A3, B2:D2)将接收参数[[x], [y], [z]][[x,y,z]],其中x、y、z是存储在这些单元格中的值。

特别是,数组可以是布尔数组,然后可以在JavaScript自己的filter方法中使用这些数组。下面是FILTER函数作为自定义函数的重新实现:

代码语言:javascript
复制
function myFilter(arr, conditions) {
  if (conditions.length == 1) {
    return arr.map(function (row) {
      return row.filter(function (_, i) {
        return conditions[0][i];
      });
    });
  }
  else {
    return arr.filter(function (_, i) {
      return conditions[i][0];
    });
  }
}

要将其用于比较,需要arrayformula包装器:

代码语言:javascript
复制
=arrayformula(myfilter(A1:C10, D1:D10 > 5))

原因是没有包装器,D1:D10 > 5返回与D1 > 5相同的内容。内置的FILTER函数不需要这样的包装器,因为已知它是一个与数组一起工作的函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36797397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档