-1

我在 Excel 中继承了一个预测模型文件,该文件使用了一个用户定义的 VBA 函数,我想将其移至 Google 电子表格。这是您在电子表格中调用的自定义函数,标题和衰减是用户在调用函数时定义的两个范围(将始终与具有 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 脚本中执行此操作的(微弱)尝试不起作用:

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

将电子表格范围传递给函数时,它们始终表示为 2D Javascript 数组,即使它们是一行高(或一列宽)。另外,我认为您可能必须在 for 循环中使用“从零开始”的索引进行相同的小修改。如果范围是一排高,请尝试:

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 回答