gpt4 book ai didi

javascript - Google 电子表格的自定义函数始终返回相同的结果

转载 作者:行者123 更新时间:2023-12-03 11:14:11 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的脚本来使用如下所示的 Google 电子表格:

enter image description here

它向我展示了哪些客户使用了每一层的哪些模块。每个客户端可以使用他想要的模块数量。

我需要做的是统计有多少客户端安装了所有模块(或者三层,是一样的)。

我尝试使用内置函数来执行此操作,但没有成功。

现在我正在尝试执行自己的功能,如下所示:

function countTotalModByClient(values) {

var quantMod=0;
var quantClient=0;

for (var i=0; i<values.length; i++) {
for(var j=0; j<values.length; j++) {
if(values[i][j]=="X") {
quantMod++;
}
}

if(quantMod==15) { // total number of modules
quantClient++;
}

quantMod=0;
}

return quantClient;
}

但它总是返回相同的结果:0。

在我的工作表中,我调用如下函数:=countTotalModByClient(B3:P6)

P.S.:对代码中的魔数(Magic Number)感到抱歉,我会解决这个问题。 =)

最佳答案

这应该可以通过标准公式实现(尽管可能有点复杂)。

=countif(ArrayFormula(MMULT(--(B3:P6="X"), transpose(column(B3:P2)^0))), 15)

应返回行中计数为 15 的客户端数量。你能检查一下这是否有效吗?

或者,如果您更喜欢自定义函数,请尝试一下:

function countTotalModByClient(values) {
var quantClient = 0;
for (var i = 0; i < values.length; i++) {
if (values[i].countItem("X") === 15) quantClient += 1;
}
return quantClient;
}

Array.prototype.countItem = function (item) {
var counts = {};
for (var i = 0; i < this.length; i++) {
var num = this[i];
counts[num] = counts[num] ? counts[num] + 1 : 1;
}
return counts[item] || 0;
}

Example spreadsheet

关于javascript - Google 电子表格的自定义函数始终返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com