-1

ユーザー定義の VBA 関数を使用する Excel の予測モデル ファイルを継承しました。これを Google スプレッドシートに移行したいと考えています。これは、スプレッドシートで呼び出すカスタム関数であり、タイトルと減衰は、ユーザーが関数を呼び出すときに定義する 2 つの範囲 (常に 1 行とさまざまな列数を持つ範囲で使用されます) です。

VBA コード:

Function views(titles,decay)
    indx = titles.Count
    vtotal = 0

    For ct = 1 To indx
      vtotal = vtotal + titles(ct) * decay(indx - ct + 1)
    Next

    views = vtotal
End Function

Google Apps Script でこれを行う私の (弱い) 試みはうまくいきません:

function views(titles, decay) {
    var indx = titles.length;
    var vtotal = 0;

    for (var i = 0; i <= indx; i++) {
        var vtotal = vtotal + titles[i] * decay[indx - i + 1]
    }
    return vtotal
}

ここで試したように、範囲をカスタム関数に渡すことはできますか? 同じ答えに到達する別のアプローチはありますか?

助けてくれてありがとう!

4

1 に答える 1

1

スプレッドシートの範囲が関数に渡されると、高さが 1 行 (または幅が 1 列) であっても、常に 2D Javascript 配列として表されます。また、「ゼロベース」のインデックスを使用して for ループで同じマイナーな変更を行う必要があると思います。範囲が 1 行高い場合は、次を試してください。

function views(titles, decay) {
    var indx = titles[0].length;
    var vtotal = 0;

    for (var i = 0; i < indx; i++) {
        var vtotal = vtotal + titles[0][i] * decay[0][indx - i - 1]
    }
    return vtotal
}
于 2012-08-03T20:13:01.090 に答える