我试图独自解决问题两天,最后来到这里。
我需要在google脚本中编写一个自定义函数,它将使用某些过滤器连接范围的值(即跳过空白单元格或值等于&#34的单元格; - ")。 / p> Google工作表中的
公式应如下所示:
=concat_costum(A3:N3,"-")
结果应如下所示:
trpd-hex-phex-crfl-wi-ins-td-max_op_temp
我写了下一段代码:
function concat_costum(pRange,s){
var out=""
for(i=0;i<pRange.length;++i){
var currentValue = pRange[i]
if (!(currentValue == "-" || currentValue == "" || currentValue == "undefined")) {
out = out+currentValue+s
}
}
return out.slice(0,-1)
}
&#13;
但其输出是:
trpd,hex,phex,crfl,,-,wi,ins,td,max_op_temp,,,,
请帮助
答案 0 :(得分:1)
更快的公式
自定义函数有时需要加载一段时间,而且您的问题很简单,可以使用更快的电子表格公式:
=join("-", filter(A1:A6, A1:A6 <> ""))
自定义功能
您还可以使用JavaScript内置的数组函数将其作为自定义函数执行:
function concat_custom(s, array) {
array = conformToOneDimensionalArray(array);
return array.filter(function (value) {
return value != "";
}).join("-");
}
function conformToOneDimensionalArray(value) {
if (!Array.isArray(value)) {
value = [value];
}
else if (Array.isArray(value[0])) {
value = value.reduce(function(a, b) {
return a.concat(b);
});
}
return value;
}
但是你需要确保参数array
是一维数组。电子表格范围将作为单个值传递,即二维数组。