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

これは動作しますが、数式を修正するべきではありません。この式には、範囲の最初の行である2番目の行を参照するセルE2が含まれています...行の番号がE2、E3、式が含まれているこの行の番号を含むE4! –

+0

それはあなたが必要としていると思う – Cooper

関連する問題