根据另一张纸上同一行上一列的更改,清除一张纸上一列中每一行的内容

时间:2020-01-26 17:32:26

标签: google-apps-script google-sheets

我正在为这段代码而苦苦挣扎,该代码在同一张纸内完美工作,以使其在两张纸之间工作。例如,如果我更改单元格E5或“ Sheet1”的E列中多个单元格中的内容,这将清除单元格A5或A列中多个单元格中的内容,具体取决于它们所在的行。

function onEdit(e){
  var range = e.range;
  var row = range.getRow();
  // Check if column E and sheet "Sheet1"
  if(range.getColumn() == 5 && range.getSheet().getName() == "Sheet1") 
  {
    if(range.getHeight()>1)
    {
      // Multiple cells selection case
      var nbRow = range.getNumRows();
      var i;
      for(i =0; i < nbRow; i++)
      {
        var temp = row + i;
        e.source.getRange("A"+temp).clear();
      }
    }
    else
    {
      // One cell selection case
      e.source.getRange("A"+row).clear();
    }
  } 
}

请你们大家帮忙提供代码,使其在两张纸之间工作,因为它已经使我发疯了:/

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

更改一张纸会清除另一张纸的范围

function onEdit(e){
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet1' && e.range.columnStart==5) {
    var sh2=e.source.getSheetByName('Sheet2');
    sh2.getRange(e.range.rowStart,1,e.range.rowEnd-e.range.rowStart+1,1).clearContent()  
  }
} 

问题:我应该对代码做些什么,使其从第五行开始?前四行被冻结。 (可能是标题信息)

function onEdit(e){
  var sh=e.range.getSheet();
  if(sh.getName()=='Sheet1' && e.range.columnStart==5 && e.range.rowStart>4) {
    var sh2=e.source.getSheetByName('Sheet2');
    sh2.getRange(e.range.rowStart,1,e.range.rowEnd-e.range.rowStart+1,1).clearContent()  
  }
} 

动画:

enter image description here