繁体   English   中英

根据列单元格值清除特定行

[英]Clear specific row based on a column cell value

我有一个允许我清除工作表上所有内容的 marco,但我正在尝试执行另一个操作以仅清除特定行,但并非所有列中显示“是”一词的所有行都将被清除。 我通过将它分配给一个按钮来分离这个动作。

我一直在 stackoverflow 和一些网站上,发现一些看起来可以工作的代码,但是当我在我的工作表上尝试它时,什么也没发生。 不确定是我的范围有问题(我仍然对范围感到困惑)还是代码。

给出一个想法:

  • 包含数据的范围是 A3:L100
  • 包含“是”的列是 L3:L100 列
  • 仅清除特定行而不重新格式化行中的任何内容。 例如第 1 行无法清除,第 2 行需要清除,第 3 行无法清除
  • 清除时将第 3 行的数据移到第 2 行,替换第 2 行的数据。
  • 我正在处理多达 100 行,因此为什么数据范围在 A3:L100

截至目前,当我运行脚本时,我没有看到任何包含“是”的行被清除。 我非常感谢您的帮助!

以下是我当前来自网站的代码:

function Remove(){
      var depositid = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = depositid.getSheetByName("customer"); // sheet name is this "customer"
      var RANGE = sheet.getDataRange(); //do i have to fill in the ranges here?

      var DELETE_VAL = "Yes";  // Keyword to remove the row
      var COL_TO_SEARCH = 11; // Column L = 11

    function main() {

  var startTime = new Date().getTime();
  var deleteSelectedRows = removeThenSetNewVals();
  var runTime = (new Date().getTime() - startTime)/1000;
  Logger.log("Runtime is: "+runTime + " seconds");
};

function removeThenSetNewVals(){

      var rangeVals = RANGE.getValue();
      var newRangeVals = [];

      for(var i = 0; i < rangeVals.length; i++){
        if(rangeVals[i][COL_TO_SEARCH] != DELETE_VAL){
          newRangeVals.push(rangeVals[i]);  
        };
      };

      RANGE.clearContent();

      var newRange = SHEET.getRange(1,1,newRangeVals.length, newRangeVals[0].length);
      newRange.setValues(newRangeVals); //not sure if this is the culprit
    }
};

如果 column11 等于“是”,则清除行

function Remove(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("customer");
  var vs=sh.getDataRange().getValues();
  vs.forEach(function(r,i){
   if(r[10]=='Yes') {//if column 11=="yes"
     sh.getRange(i+1,1,1,sh.getLastColumn()).clear();//clear current row
   }
 });
}

Arrays 从零开始。 行从 1 开始,因此当您的范围从 1 开始并且 sh.getDataRange() 获取工作表上的所有数据时, i+1 是行号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM