2017-08-16 48 views
0

我需要设置特定公式,但仅限空白单元格。 这是代码,我不需要得到“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

我认为这是你想要的。我主要使用你的代码。

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); 
    } 
    } 
} 
+0

行确保你得到正确的更新。我一直在编辑它。 – Cooper

+0

它的工作原理,但公式不应该修复..这个公式包含单元格E2,它是指我的范围的第一行的第二行...我希望行的数量每行更改:E2,E3,包含公式所在行的E4号码! –

+0

好吧,我认为这就是你需要的 – Cooper

相关问题