2013-11-08 4 views
0

Колонка G: =if(and(E2<>"",F2=""),"Running","")Базовая Google Лист Формула Скрипт

Колонка H: =Mod(E2, 1)

Колонка I: =Mod(F2, 1)

Колонка J: =if(F2="","",I2-H2)

Я использую выше как формулы в каждой ячейке указанной колонки, но у меня нет способа защитить колонки G, H, I и J от себя владельца листа. Или я?

Моим решением было бы создать сценарий для выполнения этих функций. Любая помощь в том, как это можно сделать?

я был в состоянии решить первую проблему, Колонка G с:

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "Timesheet") { //checks that we're on the correct sheet 
    var r = s.getActiveCell(); 
     if(r.getColumn() == 1) { //checks the column 
     var nextCell = r.offset(0, 6); 
     if(nextCell.getValue() != '') //is not empty? 
     nextCell.setValue(""); 
     else if(nextCell.getValue() === '') //is empty? 
     nextCell.setValue("Running"); 
     else nextCell.setValue(""); 
     if(r.getColumn() == 1) //checks the column 
     var nextCell = r.offset(-1, 6); 
     if(nextCell.getValue() != '') //is empty? 
      nextCell.setValue(""); 
    } 
    } 
} 
} 
+0

Пожалуйста, уточните это, не зная, что вы просите. – eddyparkinson

+0

Я хотел бы использовать скрипты для выполнения приведенных выше формул. – user2969867

+0

Это скорее сайт вопросов и ответов, а не учебный сайт. Существует множество хороших учебников по Java Script. Похоже, вы делаете хороший прогресс, удачи. – eddyparkinson

ответ

0

Короткий ответ

Вместо того, чтобы «изобретать колесо» использовать скрипт для добавления формулы, которые не должны быть изменены ,

Объяснение

Следующий сценарий будет перезаписывать ячейки в столбцах Н, I, J & K из строки 2 с соответствующей формулой, если любой пользователь изменять их. Обратите внимание, что вместо A1 используется нотация R1C1.

function onEdit(e) { 
    var range = e.range; 
    var col = range.getColumn(); 
    if (col >= 7 && col <= 10) { 
    var row = range.getRow(); 
    if (row > 1) { 
     switch (col) { 
     case 7: // Column H 
      range.setFormulaR1C1('=if(and(R[0]C[-2]<>"",R[0]C[-1]=""),"Running","")'); 
      break; 
     case 8: // Column I 
      range.setFormulaR1C1('=Mod(R[0]C[-3], 1)'); 
      break; 
     case 9: // Column J 
      range.setFormulaR1C1('=Mod(R[0]C[-3], 1)'); 
      break; 
     case 10: // Column K 
      range.setFormulaR1C1('=if(R[0]C[-4]="","",R[0]C[-2]-R[0]C[-1])'); 
      break; 
     } 
    } 
    } 
} 
Смежные вопросы