Excel到Google文档 – 脚本

我有一个电子表格,我目前在MS Excel中使用。 我正在尝试将工作表转换为Google文档电子表格,但无法让我的Excel脚本在Google文档中正常工作。

这是一个简单的积累脚本重复在一行单元格:

Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target If .Address(False, False) = "C3" Then If IsNumeric(.Value) Then Application.EnableEvents = False Range("C4").Value = Range("C4").Value + .Value Application.EnableEvents = True End If End If End With 

如果任何人都可以把它翻译成我需要在谷歌文档,甚至更好地改善,使脚本覆盖整个行(例如:如果单元格c4d4e4的值分别为5,7,12和I放入c310 ,然后c4会显示15 ;如果我放入d36 ,那么d4将是13 ,如果我把7放入e3 ,那么e4会显示19 )。

您无法直接将VBAfunction转换为Google Apps脚本,但是如果您将VBA作为规范,则通常可以创build类似的function。 请注意,Excel VBA中提供的许多function都是特定于UI和Windows环境的,并且在GAS(例如, Application.EnableEvents )中没有等效的function。

在这种情况下,VBA函数似乎是响应电子表格中特定单元格的更改。 在GAS中,我们可以使用onEdit触发器function。 触发器function将提供事件信息,我们可以解码以找出编辑发生的位置,以及更改的单元格中的值。 请参阅了解事件 ,特别是电子表格编辑事件了解更多信息。

以下是我认为VBAfunction将出现在Google Apps脚本中的方式。 我借用了一个辅助函数isNumber()来validationJavaScript中的十进制数 – IsNumeric()来简化单元格C3内容的validation。

 function onEdit(event) { if (event.range.getA1Notation() == "C3") { if (isNumber(event.value) { // C4 = C4 + C3 var c4 = event.range.offset(0,1); // one cell to the right var c4Val = c4.getValue() + event.value; c4.setValue(c4Val); } } } // From stackoverflow.com/a/1830844/1677912 function isNumber(n) { return !isNaN(parseFloat(n)) && isFinite(n); } 

这有你需要的命令。 在Javascript中runExample()有一些相似之处,你的子。