清除一张纸上一列中每一行的内容,取决于另一张纸上同一行中一列中的更改

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清除一张纸上一列中每一行的内容,取决于另一张纸上同一行中一列中的更改相关的知识,希望对你有一定的参考价值。

我正在为此代码苦苦挣扎,该代码在同一张纸内完美工作,以使其在两张纸之间工作。例如,如果我更改单元格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();
    }
  } 
}

你们中的任何人都可以帮我提供代码,使其在两张纸之间工作,因为它已经使我发疯了:/

任何帮助将不胜感激!

答案

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

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

以上是关于清除一张纸上一列中每一行的内容,取决于另一张纸上同一行中一列中的更改的主要内容,如果未能解决你的问题,请参考以下文章

如何根据ID更新另一张纸上的行而不用空白单元格覆盖?

我试图将一张纸上的错误打印在另一张纸上,但无法弄清楚如何

从一张纸复制数据并将其粘贴到另一张纸上

宏复制到另一张纸上的下一个空白行

VBA将数据保存在另一张纸上

Word怎样在一张纸上放多张图片