2013-05-03 3 views
2

У меня есть таблица, которую я использую в настоящее время в MS Excel. Я пытаюсь преобразовать лист в электронную таблицу Документов Google, но я не могу заставить свой excel-скрипт функционировать в документах google.Excel в Google Docs - Script

Это простое накопление сценарий повторяется через ряд клеток:

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 Docs, или даже лучше, улучшить его так, что сценарий охватывает всю строку (пример: если клетки c4, d4 и e4 имеют значения 5, 7, 12 соответственно, и я вложил в c3: 10, то c4 бы показать 15, если положить в d3: 6, то d4 будет 13, и если бы я положил 7 в e3, то e4 покажет 19).

+0

Сообщить об ошибке! – Jim

+0

Честно говоря, я не слишком увлечен Javascript. Если я попытаюсь подключить его как есть, я получаю следующее: Отсутствует; перед заявлением. (строка 1, файл «Код») Dismiss – user2347530

+0

Вы имеете в виду «Visual Basic», а не Javascript, не так ли? – Jim

ответ

-1

This имеет команды, которые вам нужны. runExample() в Javascript имеет некоторые сходства с вашим под.

+0

@ user2347530. Если вы считаете это приемлемым, нажмите на большую стрелку вниз, чтобы перейти к «Принять», а затем нажмите на стрелку вверх, чтобы указать, что это было полезно, если хотите. Благодаря! – Jim

0

Вы не можете напрямую перевести функцию VBA в Google Apps Script, но если вы возьмете VBA в качестве спецификации, вы можете создать аналогичную функцию. Обратите внимание, что многие возможности, предоставляемые в Excel VBA, специфичны для пользовательского интерфейса и среды Windows и не имеют эквивалента в GAS (например, Application.EnableEvents).

В этом случае функция VBA реагирует на изменения конкретной ячейки в электронной таблице. В GAS мы можем использовать функцию триггера onEdit. Функция триггера будет снабжена информацией о событиях, которую мы можем декодировать, чтобы выяснить, где произошло изменение, и каково значение в измененной ячейке. См. Understanding Events, особенно Таблица Редактировать события для получения дополнительной информации.

Вот как я думаю, что функция VBA появится в Google Apps Script. Я занял вспомогательную функцию, isNumber(), от Validate decimal numbers in JavaScript - IsNumeric(), чтобы упростить проверку содержимого ячейки 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); 
}