我需要设置一个特定的公式,但只能在空白单元格中。 这是代码,我不需要得到“0”,我不需要一个值:我需要一个公式!
这是我想要的公式:
//formula "codice ditta" colonna D
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange('D2:D'+sheet.getLastRow());
cell.setFormula('=IFERROR(INDEX(CO.Contatti!A:A;MATCH(E2;CO.Contatti!B:B;0)))')
这是我得到公式的代码。 (不是setValues而是setFormula ......)
function onOpen() {
SpreadsheetApp.getUi().createMenu("Zeros")
.addItem("Sheet", "zeroSheet")
.addToUi();
}
function zeroSheet() {
var sheet = SpreadsheetApp.getActiveSheet();
var data, range;
var lastRow = sheet.getMaxRows();
var lastColumn = sheet.getMaxColumns();
range = sheet.getRange(2, 4, (lastRow-1), 1);
data = range.getValues();
range.setValues( data.map( function(row) {
return row.map( function(cell) {
return !cell ? 0 : cell;
});
}));
}
答案 0 :(得分:0)
我认为这就是你想要的。我主要使用你的代码。
function setFormulaInBlankCells()
{
var sheet=SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getMaxRows();
var lastColumn=sheet.getMaxColumns();
var range=sheet.getRange(2, 4, (lastRow-1), 1);
var data=range.getValues();
for(var i=0;i<data.length;i++)
{
if(!data[i][0])
{
sheet.getRange(i+1,4).setFormula('=IFERROR(INDEX(CO.Contatti!A:A;MATCH(E2;CO.Contatti!B:B;0)))');
//data[i][0]='=IFERROR(INDEX(CO.Contatti!A:A;MATCH(E2;CO.Contatti!B:B;0)))'; I have actually done this in the past and it will work this way. But your call.
}
}
//range.setValues(data);//If you use commented code you'll need this. It runs much faster.
}
更新后的版本,其中的单元格会更新当前的行
function setFormulaInBlankCells()
{
var sheet=SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getMaxRows();
var lastColumn=sheet.getMaxColumns();
var range=sheet.getRange('D2:D'+sheet.getLastRow());
var data=range.getValues();
for(var i=0;i<data.length;i++)
{
if(!data[i][0])
{
var A1=sheet.getRange(i+1,5).getA1Notation();
var formula='=IFERROR(INDEX(CO.Contatti!A:A;MATCH(' + A1 + ';CO.Contatti!B:B;0)))'
sheet.getRange(i+1,4).setFormula(formula);
}
}
}