我有一个目前在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
如果有人可以将其转换为Google文档中我需要的内容,或者甚至可以更好地改进它,以便脚本覆盖整行(例如:if cells c4
,d4
和{{ 1}}的值分别为e4
,5
,7
,我放入12
:c3
,然后10
会显示{ {1}};如果我加入c4
:15
,则d3
将为6
,如果我将d4
加入13
,然后7
会显示e3
)。
答案 0 :(得分:0)
您无法直接将VBA功能转换为Google Apps脚本,但如果您将VBA作为规范,则通常可以创建类似的功能。请注意,Excel VBA中提供的许多功能都特定于UI和Windows环境,并且在GAS中没有等效项(例如Application.EnableEvents
)。
在这种情况下,VBA功能似乎响应电子表格中特定单元格的更改。在GAS中,我们可以使用onEdit
触发器功能。触发器功能将提供事件信息,我们可以解码以找出编辑发生的位置,以及更改的单元格中的值。有关详情,请参阅Understanding Events,尤其是电子表格编辑事件。
以下是我认为VBA功能会出现在Google Apps脚本中的方式。我从Validate decimal numbers in JavaScript - IsNumeric()借用了辅助函数isNumber()
,以简化单元格C3内容的验证。
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);
}
答案 1 :(得分:-1)
This拥有您需要的命令。 Javascript中的runExample()
与您的子版有一些相似之处。