删除在谷歌电子表格的行,如果说行中单元格的值是0或空白删除在谷歌电子表格的行,如果说行中单元格的值是

2019-06-17 09:40发布

我希望能够删除整个排在谷歌电子表格,如果值行中输入的说列“C”为0或空白。 有一个简单的脚本,我可以写来完成呢? 谢谢!

Answer 1:

function onEdit(e) {
  //Logger.log(JSON.stringify(e)); 
  //{"source":{},"range":{"rowStart":1,"rowEnd":1,"columnEnd":1,"columnStart":1},"value":"1","user":{"email":"","nickname":""},"authMode":{}}
  try {
    var ss = e.source; // Just pull the spreadsheet object from the one already being passed to onEdit
    var s = ss.getActiveSheet();

    // Conditions are by sheet and a single cell in a certain column
    if (s.getName() == 'Sheet1' &&  // change to your own 
        e.range.columnStart == 3 && e.range.columnEnd == 3 &&  // only look at edits happening in col C which is 3
        e.range.rowStart == e.range.rowEnd ) {  // only look at single row edits which will equal a single cell
      checkCellValue(e); 
    }
  } catch (error) { Logger.log(error); }
};

function checkCellValue(e) {
  if ( !e.value || e.value == 0) {  // Delete if value is zero or empty
    e.source.getActiveSheet().deleteRow(e.range.rowStart);
  }
}

这仅着眼于从一个单细胞编辑的价值,而不是现在在整个工作表中的值。



Answer 2:

我写这个剧本做同样的事情,我的谷歌电子表格中的一个。 我希望能够运行该脚本后,所有的数据都在电子表格中,所以我必须在脚本中添加一个菜单选项来运行该脚本。

/**
 * Deletes rows in the active spreadsheet that contain 0 or
 * a blank valuein column "C". 
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet
 */
function readRows() {
  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[2] == 0 || row[2] == '') {
      sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
      rowsDeleted++;
    }
  }
};

/**
 * Adds a custom menu to the active spreadsheet, containing a single menu item
 * for invoking the readRows() function specified above.
 * The onOpen() function, when defined, is automatically invoked whenever the
 * spreadsheet is opened.
 * For more information on using the Spreadsheet API, see
 * https://developers.google.com/apps-script/service_spreadsheet
 */
function onOpen() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [{
    name : "Remove rows where column C is 0 or blank",
    functionName : "readRows"
  }];
  sheet.addMenu("Script Center Menu", entries);
};

测试表格之前:

从菜单中运行脚本:

行书后:



Answer 3:

我可以提出一个简单的解决方案,而无需使用脚本!

比方说,你想删除在C列空的文本行进行排序的数据(Data菜单 - >排序表柱C,A-> Z)在片WRT C柱,让所有的空文本行会一起提供。

只要选择这些行一起,右击 - >删除行。 然后,您可以将您的数据根据​​你所需要的列重新排序。 完成。



Answer 4:

我有几个问题,脚本,所以我的解决方法是使用“过滤器”的工具。

  1. 选择所有的电子表格数据
  2. 点击过滤器工具图标(看起来像酒杯)
  3. 点击你要搜索的列的第一个单元格的新的可用过滤器图标。
  4. 选择“筛选按条件”>设置条件(我用的是“文本包含”>“字”)

这将使包含单词的搜索的行,他们可以通过批量选择它们,同时按住Shift键删除>点击右键>删除行。



Answer 5:

这就是我设法让工作。 你可以看到,我向后循环通过片上,从而作为行被删除的下一行不会被跳过。 我希望这可以帮助别人。

  function UpdateLog() {

  var returnSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('RetLog');
  var rowCount = returnSheet.getLastRow();

  for (i = rowCount; i > 0; i--) {
    var rrCell = 'G' + i;
    var cell = returnSheet.getRange(rrCell).getValue();
    if (cell > 0 ){
      logSheet.
      returnSheet.deleteRow(i);
    }
  }
}


Answer 6:

很简单的要求。 试试这个 :

 function try_It(){
 deleteRow(2); //// choose col = 2 for column C
 }

 function deleteRow(col){ // col is the index of the column to check for 0 or empty
 var sh = SpreadsheetApp.getActiveSheet();
 var data = sh.getDataRange().getValues();
 var targetData = new Array();
 for(n=0;n<data.length;++n){
 if(data[n][col]!='' && data[n][col]!=0){ targetData.push(data[n])};
 }
 Logger.log(targetData);
 sh.getDataRange().clear();
 sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
 }

编辑重新阅读我不知道如果这个问题是问关于编辑功能或功能(如本以上)一个“活”的数据输入后应用问题...这不是我很清楚。 ..所以随时要在必要时更准确;)



Answer 7:

仔细阅读你的问题,我想出了这个解决方案:

function onOpen() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // create menu
  var menu = [{name: "Evaluate Column C", functionName: "deleteRow"}];

  // add to menu
  ss.addMenu("Check", menu);
}

function deleteRow() {
  // get active spreadsheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // get active/selected row
  var activeRow = ss.getActiveRange().getRowIndex();

  // get content column C
  var columnC = ss.getRange("C"+activeRow).getValue();

  // evaluate whether content is blank or 0 (null)
  if (columnC == '' || columnC == 0) {
    ss.deleteRow(parseInt(activeRow));
  }
}

此脚本将创建在文件加载一个菜单,使您能够删除行的基础上,在C列设置,或没有这些标准。



Answer 8:

有一个简单的方法:

  1. 使用过滤 ,只显示你想要删除的行。 例如,我的专栏,在此基础上我想删除行对他们的类别,A,B,C通过过滤界面我只选择了A和B,这是我想删除。
  2. 选择所有行并将其删除。 这样做,在我的例子中,有效地选择所有的A和B行,并删除他们。 现在我的电子表格不显示任何行。
  3. 关闭过滤器。 这不隐藏我的C行。 完成!


Answer 9:

这个简单的代码做的工作对我来说!

    function myFunction() {

      var ss = SpreadsheetApp.getActiveSpreadsheet();  // get active spreadsheet

      var activeRow = ss.getActiveRange().getRowIndex();  // get active/selected row

var start=1;
var end=650;
var match='';
var match2=0;   //Edit this according to your choice.

     for (var i = start; i <= end; i++) {
      var columnC = ss.getRange("C"+i).getValue();
      if (columnC ==match  || columnC ==match2){ ss.deleteRow(i); }
     }
    }


文章来源: Delete a row in Google Spreadsheets if value of cell in said row is 0 or blank