我正在尝试构建一个简单的脚本来处理如下所示的Google电子表格:
它向我展示了我的哪些客户使用每层的哪些模块。每个客户可以使用他想要的模块数量。
我需要做的是计算安装了所有模块的客户数量(或三层,它们是相同的)。
我尝试使用内置函数执行此操作但未成功。
现在我正在尝试自己的功能,看起来像这样:
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。:对于代码中的幻数,我会解决这个问题。 =)
答案 0 :(得分:1)
这应该可以使用标准公式(虽然可能有点复杂)。
=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;
}