首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有找到匹配的,如何删除单元格?

如果没有找到匹配的,如何删除单元格?
EN

Stack Overflow用户
提问于 2020-01-27 09:51:40
回答 1查看 48关注 0票数 0

为了满足我的条件,我在写IF语句时遇到了困难。我有两张纸:主打和物流。第一种是关于货物及其运输的具体信息,如拖车、位置和到达日期。第二张表格载有所有运输资料,例如拖车、司机、抵港、离港等名称。根据“物流”单张上列明的拖架,使用者可指明他想为有关货物使用哪一辆拖架。

但是,在由于取消而从“物流”中删除预告片的情况下,我无法撤销以前对"Main“的选择。我的想法是让这个脚本寻找匹配的组合,目的地和拖车在两个工作表(第8和第13栏的主,第1和第2栏的物流)。如果在“物流”中没有找到与同一目的地匹配的拖车,则脚本应将"Main“上的第13、14和16列设置为空。

有人能帮我写一个IF语句来满足这个条件吗?

到目前为止,我已经附加了一些代码。我认为只有在声明需要修改的情况下。谢谢你的帮助!

代码语言:javascript
复制
function deleteSelection() {
  // Main variables:
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetMain = ss.getSheetByName("Main");
  var tabMain = sheetMain.getRange(2, 1, sheetMain.getLastRow(), 18);
  var dataMain = tabMain.getValues();

  // Logistics variables:
  var sheet = ss.getSheetByName("Logistics");
  var dataRange = sheet.getRange(2, 1, sheet.getLastRow(), 9);
  var data = dataRange.getValues();

  for(var i = 0; i < dataMain.length; i++){

    for(var j = 0; j < data.length; j++){

      // Compare data: if there is no match between 2 sheets, set "Trailer", "Position" and "Arrival date" to empty:
      if(dataMain[i][7].toLowerCase() == data[j][0].toLowerCase() && dataMain[i][12] == data[j][1]){  
      } else{
        dataMain[i][12] = "";
        dataMain[i][13] = "";
        dataMain[i][15] = "";
        }

    }

  }

  // Take the modified tab and put it on the spreadsheet
  tabMain.setValues(dataMain);
}

UPD:添加了一个示例链接。在“物流”上,您可以看到划过的行,删除行时,脚本应该删除"Main“上划掉的行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-27 13:57:15

您正在尝试建立事件和拖车的主匹配值是否与物流值匹配。

我对你采取了稍微不同的态度。我连接了主"EVent“和”拖车“的值,并使用该值在物流上找到匹配项。

  • 如果找到匹配项,则脚本可以脱离该循环并继续执行下一个循环。
  • 如果没有找到匹配,那么变量就会增加(因为匹配可能在随后的比较中找到)。然而,一旦对物流的所有价值都进行了评估,如果不匹配的数量等于物流记录的数量,则必须更新Main上的值。
代码语言:javascript
复制
function so5992862301() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetMain = ss.getSheetByName("Main");
  var tabMain = sheetMain.getRange(2, 1, sheetMain.getLastRow()-1, 18);
  var dataMain = tabMain.getValues();
  // Logger.log("DEBUG: Last row = "+sheetMain.getLastRow()+", length of dataMain = "+dataMain.length+" tab main = "+tabMain.getA1Notation());

  // Logistics variables:
  var sheet = ss.getSheetByName("Logistics");
  var dataRange = sheet.getRange(2, 1, sheet.getLastRow()-1, 9);
  var data = dataRange.getValues();
  // Logger.log("DEBUG: Logistics Last row = "+sheet.getLastRow()+", length of data = "+data.length+" dataRange = "+dataRange.getA1Notation());  

  // start loop through Main
  for(var i = 0; i < dataMain.length; i++){
    // count the matches
    var mismatch=0

    // start loop through Logistics
    for(var j = 0; j < data.length; j++){

      // match Logistics: Event (Column A) and Trailer (Column B)
      // match Main: Event (Column A) and Trailer (Column C)
      // Compare data: if there is no match between 2 sheets, set "Trailer", "Position" and "Arrival date" to empty:

      var logEventTrailer = data[j][0]+data[j][1];
      var mainEventTrailer = dataMain[i][0]+dataMain[i][2];

      //Logger.log("DEBUG: i:"+i+", Main:"+mainEventTrailer+", j:"+j+" Log:"+logEventTrailer);

      if (mainEventTrailer === logEventTrailer){
        // match
        // Logger.log("DEBUG: Match-"+"i:"+i+", Main:"+mainEventTrailer+", j:"+j+" Log:"+logEventTrailer);
        // if this is a match, then break loop and goto to next i
        break;
      }
      else{
        // no match
        mismatch = mismatch+1
        //Logger.log("DEBUG: No match:"+match+"-i:"+i+", Main:"+mainEventTrailer+", j:"+j+" Log:"+logEventTrailer)

      }

      // how many mismatches
      if (mismatch ==data.length){
        // no match found
        //Logger.log("DEBUG: no match found");
        // update array values for this row
        dataMain[i][2] = "";
        dataMain[i][3] = "";
        dataMain[i][4] = "";
      }

    }

  }
  // update the array values for Main
  tabMain.setValues(dataMain);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59928623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档