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
如果任何人都可以把它翻译成我需要在谷歌文档,甚至更好地改善,使脚本覆盖整个行(例如:如果单元格c4
, d4
和e4
的值分别为5,7,12和I放入c3
: 10
,然后c4
会显示15
;如果我放入d3
: 6
,那么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()
有一些相似之处,你的子。