将VBA函数转换为Google Apps脚本函数
我在Excel中继承了一个预测模型文件,该文件使用用户定义的VBA函数,我希望将其移至Google Spreadsheets。这是您在电子表格中调用的自定义函数,并且标题和衰减是用户在调用函数时定义的两个范围(将始终用于具有1行和不同列数的范围)。将VBA函数转换为Google Apps脚本函数
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
我在谷歌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
}
我可以传递的范围为自定义函数,因为我曾尝试在这里做什么?是否有另一种方法可以达到相同的答案?
感谢您的帮助!
将电子表格范围传递给函数时,即使它们是一行高(或一列宽),它们也始终表示为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
}
谢谢。我添加了建议的代码(但是将for循环设置为“基于一个”的索引),但是当我在电子表格的单元格中调用该函数时,收到“错误:溢出”消息。 '函数视图(标题,衰减){var_type = titles [0] .length; var vtotal = 0;对于(var i = 1; i khayes 2012-08-03 20:28:08
对不起,我在发布后不久编辑了我的答案,但是您必须抓住我的原始代码 - 现在看到答案 - 应该是'decay [0] [indx-i-1]'。 – AdamL 2012-08-03 20:33:55
是的,我会尝试在我的答案代码 - 从传入范围形成的数组将无论如何都是零。 – AdamL 2012-08-03 20:36:39
关于[meta]被建议投票关闭请求代码翻译的问题。请参阅[代码翻译标记](https://meta.*.com/q/265825/1595451) – 2017-06-30 01:13:36