2015-04-24 2 views
0

Возможно ли в столбце заменить автоматически формулы на значения в конце месяца?В конце каждого месяца автоматически заменяются формулы на значения

Я думал что-то вроде этого, но он не работает в Google Таблицах:

sub MyProgram() 
DimMyRange As Range 
set MyRange=Range("A1") 
MyRange=MyRange.Value 
End Sub 

Вот my sheet.

+0

Вам необходимо [GAS] (https://developers.google.com/apps-script/overview), которое выглядит * ничего *, как ваша попытка! – pnuts

ответ

0

Как сказал Пнутс, это очень похоже на VBA для Excel. Я вообще не признаю его как Javascript. Google Таблицы используют Javascript для расширенных функций.

Я быстро покончил с вашей проблемой и предложил это как предлагаемое решение.

function formulaToValues(){ 
var columnWithFormula = 1; /* If Column A is 1, and B is 2, what column has the formulas to be changed into values */ 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var range = sheet.getRange(1, columnWithFormula, sheet.getLastRow(),1) 
var values = range.getValues(); 

range.setValues(values); 


} 

Вы можете изменить columnWithFormula & sheet частей в соответствии с вашими потребностями.

Затем вы можете прикрепить сценарий к месячному таймеру, перейдя в ресурсы ---> Текущие триггеры проектов в редакторе сценариев.

0

Вы можете обратиться к документации Class ClockTriggerBuilder и Class Range. Документация Googles и подсказки кода в редакторе расскажут вам все, что вам нужно знать.

Этот сценарий будет выполняться функция «SETVAL» в первый день каждого месяца:

//Create a named range that encompasses your the cells you are interested in. 
//Run 'createTrigger' from the Script Editor. Do not run anything else. 

ss = SpreadsheetApp.getActiveSpreadsheet(); 

function createTrigger() { 
    ScriptApp. 
    newTrigger("setVal"). 
    timeBased(). 
    onMonthDay(1). 
    create(); 
} 

function setVal() { 
    var range = ss.getRangeByName('NamedRangeContainingFormula'); 
    var vals = range.getValues(); 
    range.setValues(vals); 
} 

Если вы по какой-то причине на самом деле нужно работать в последний день, вам нужно будет (1) функция, которая получит последний день следующего месяца, и (2) триггер, который удалит текущий триггер setVals и создаст новый. Сообщите нам, если это то, что вам действительно нужно.

Смежные вопросы