0

如果'delete'位於該行的第4個單元格中,我的代碼如下,當前會刪除整行。是否可以刪除左邊的3個單元格以及我寫入'刪除'的單元格,而不是整行(例如,我不想刪除單元格B16中的其他內容?)在不刪除整行的情況下刪除Google表格中的單元格

我一直沒能找到一個.deleteCell功能是有另一種方式來做到這一點

function deleteRows() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var rows = sheet.getDataRange(); 
    var numRows = rows.getNumRows(); 
    var values = rows.getValues(); 

    var rowsDeleted = 0; 
    for (var i = 0; i <= numRows - 1; i++) { 
    var row = values[i]; 
    if (row[4] == 'delete') { // This searches all cells in columns A (change to row[1] for columns B and so on) and deletes row if cell is empty or has value 'delete'. 
     sheet.deleteRow((parseInt(i)+1) - rowsDeleted); 
     rowsDeleted++; 
    } 
    } 
}; 
+0

你的意思是清空他們的內容,而不是刪除單元格? –

+0

我想刪除單元格。謝謝! – tbowden

+0

因此,您想要刪除的單元格下方的所有單元格都會移動一個單元格?您必須使用Google Apps腳本手動編程。沒有內置功能。 –

回答

0

所以問題是:?

如何移動的所有單元格下方的給定單元格向上排列(覆蓋給定單元格值)?

的代碼要做到這一點是:

function deleteCell(sheet, cellx, celly){ 
    var wholeSheet = SpreadsheetApp.openById(sheet).getRange("A1:F").getValues(); 
    for(var i = celly; i<wholeSheet.length; i++){ 
     wholeSheet[cellx][i] = wholeSheet[cellx][i+1]; 
    } 
    SpreadsheetApp.openById(sheet).setValues(wholeSheet); 
} 
+0

無法縫合以獲得此工作!我已經移動了x和y。該問題似乎在第2行。此代碼是否與特定列相關聯l.e只有其中出現「delete」的行。 – tbowden

+0

糟糕,我看到我在那裏犯了一個錯誤:我忘記了範圍。請再試一次。第2行中的「F」應該是工作表中的最後一列(例如,如果工作表有3列,則此「F」應爲「C」)。 –

+0

如果移位後的單元格包含任何公式,則它們將丟失,由於'setValues'而被數字替換。格式化也不會移動。使用'copyTo'方法來避免這兩個問題。 (cc:@tbowden) – FTP

0

刪除與上移或左移

這將刪除單元格,移取決於移動參數向上或向左數據。

function delCellAndShift(row,column,shift) 
{ 
    if(row && column) 
    { 
    var shift=(typeof(shift)!='undefined')?shift:'left'; 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var rg=sh.getDataRange() 
    var vA=rg.getValues(); 
    if(shift=='left') 
    { 
     var tA=vA[row-1]; 
     tA.splice(column-1,1); 
     tA.push(''); 
     vA[row-1]=tA; 
     rg.setValues(vA); 
    } 
    if(shift=='up') 
    { 
     var vB=Object.keys(vA[0]).map(function (c) { return vA.map(function (r) { return r[c]; }); }); 
     var tA=vB[column-1]; 
     tA.splice(row-1,1); 
     tA.push(''); 
     vB[column-1]=tA; 
     vA=Object.keys(vB[0]).map(function (c) { return vB.map(function (r) { return r[c]; }); }); 
     rg.setValues(vA); 
    } 
    } 
    else 
    { 
    var s='Invalid Inputs for delCellAndShift.<br /><input type="button" value="Close" onClick="google.script.host.close();" />'; 
    var ui=HtmlService.createHtmlOutput(s); 
    SpreadsheetApp.getUi().showModalDialog(us, 'Invalid Inputs') 
    } 
} 

我測試了它使用以下功能設置我的數據和運行的主要功能。

function testDelCell() 
{ 
    delCellAndShift(3,7,'up'); 
} 

function testsetupfordelcell() 
{ 
    var rs=10; 
    var cs=10; 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var rg=sh.getRange(1,1,rs,cs); 
    var vA=rg.getValues(); 
    for(var i=0;i<rs;i++) 
    { 
     for(var j=0;j<cs;j++) 
     { 
     vA[i][j]=Utilities.formatString('%s,%s',i,j) 
     } 
    } 
    rg.setValues(vA); 
} 

這是它的一個樣本左移:

enter image description here

這是它的上移一個樣本:

enter image description here