Excel到Google文档 - 脚本

时间:2013-05-03 17:17:15

标签: excel google-apps-script google-sheets

我有一个目前在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 c4d4和{{ 1}}的值分别为e457,我放入12c3,然后10会显示{ {1}};如果我加入c415,则d3将为6,如果我将d4加入13,然后7会显示e3)。

2 个答案:

答案 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()与您的子版有一些相似之处。