2017-08-16 49 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

相關問題