评估作为参数传递给 Google 电子表格中自定义函数的条件
Evaluate conditions passed as arguments to custom function in Google spreadsheet
我想创建一个自定义函数,它像 FILTER() 函数一样接受条件作为参数,例如:
LARGEST_STREAK(Data, Winnings > 0)
LARGEST_STREAK(Data, Winnings > 0, Sports = "Football")
(数据、奖金和体育被命名范围)。
你会有这样做的函数的例子吗?最好的是 FILTER() 函数的源代码,但我什至不确定它是 Javascript 在后面运行的内置函数。
自定义函数接收的参数不是范围,而是 JavaScript 值或双精度数组。例如,customfunction(A1:A3, B2:D2)
将接收参数[[x], [y], [z]]
和[[x,y,z]]
其中 x,y,z 是存储在这些单元格中的值。
特别是,数组可以是布尔数组,然后可以在JavaScript自己的filter
方法中使用。以下是FILTER
函数作为自定义函数的重新实现:
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
包装器:
=arrayformula(myfilter(A1:C10, D1:D10 > 5))
原因是如果没有包装器,D1:D10 > 5
返回与 D1 > 5
相同的内容。内置的 FILTER
函数不需要这样的包装器,因为它已经知道是一个处理数组的函数。
相关文章:
- 自定义函数中的光标位置
- Google Sheet自定义函数返回0
- 其中是自定义函数中的属性
- 创建自定义函数以在函数上运行完整的多选下拉列表
- Google Sheets自定义函数条件格式
- dalek回调或自定义函数
- UI网格:如何从自定义函数访问MODEL_COL_FIELD
- 评估作为参数传递给 Google 电子表格中自定义函数的条件
- 具有自定义函数调用的 HTML 表单
- 使用 jQuery 对动态创建的元素调用自定义函数
- 从自定义函数返回promise
- extjs-使用传递的参数创建自定义函数
- AngularJS DI用于自定义函数
- Javascript 自定义函数错误
- 如何使用Angular 1.5组件将属性求值为字符串,这是一个自定义函数
- 为谷歌工作表创建一个自定义函数
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- JavaScript自定义函数返回意外值
- 如何在javascript中创建看起来像点符号的自定义函数?例如str.getFirstIndex();
- 调用插件外部的自定义函数并传递参数