2016-07-25 2 views
1

私は2日間問題を単独で解決しようとしていましたが、ここに来ました。範囲内の値をカスタム連結するためのGoogleスクリプト

私は、範囲の値をいくつかのフィルタ(つまり空白のセルや " - "に等しい値のセルをスキップする)で連結するカスタム関数をgoogleスクリプトで記述する必要があります。 Googleシートで

式べきでは次のようになります。

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) 
 
}

01:私は次のコードを書いた

trpd-hex-phex-crfl-wi-ins-td-max_op_temp 

=concat_costum(A3:N3,"-") 

結果は次のようになります必要があります

が、その出力は、次のとおりです。

trpd,hex,phex,crfl,,-,wi,ins,td,max_op_temp,,,, 

答えて

1

より速く式

カスタム関数が時々ロードするためにしばらく時間がかかることができ、あなたの問題が非常に速く、スプレッドシートを使用するのに十分に簡単です助けてください式:

=join("-", filter(A1:A6, A1:A6 <> "")) 

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; 
} 

しかし、あなたはPARAMTER arrayは1次元配列であることを確認する必要があります。STOM機能

は、JavaScriptの配列関数に建てられたのいくつかを利用してカスタム関数としてそれを行うにもすることができます。スプレッドシートの範囲は、2次元配列の単一の値として渡されます。

+0

ありがとうございました。 –

関連する問題