基于单元格值的重复行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于单元格值的重复行相关的知识,希望对你有一定的参考价值。

我想根据单元格值复制行,然后删除单元格值(红色),以便在重新运行脚本时不会再次在同一行上工作

我尝试过脚本,但是有两个问题

1-单元格值保持不变,因此当重新运行脚本时,它将导致一次又一次重复同一行2-从整个工作表中删除我写的公式

如果您要检查脚本,脚本仍存在于脚本中https://docs.google.com/spreadsheets/d/1fJc2ymAADaZ4jtEGRAkUkWRape24Un7OE4jYcgcd9FM/edit#gid=0

答案

单行自动复制

function AutoDuplicate() 
  var ss=SpreadsheetApp.getActive()
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getDisplayValues();
  var bA=rg.getBackgrounds();
  var v=[];
  var b=[]
  for(var i=0;i<vA.length;i++)
    var t1=bA[i][7];
    var t2=vA[i][7];
    if(bA[i][7]=='#ff0000' && !isNaN(vA[i][7]) && Number(vA[i][7])>0) 
      bA[i][7]='#ffffff';
      for(var j=0;j<vA[i][7];j++) 
        v.push(vA[i]);
      
      b.push(bA[i]);
      sh.getRange(1,1,v.length,v[0].length).setValues(v);
      sh.getRange(1,1,b.length,b[0].length).setBackgrounds(b);
    
  
    

动画:

enter image description here

多行自动复制

function autoDupeForMultipleRows() 
  var ss=SpreadsheetApp.getActive()
  var sh=ss.getActiveSheet();
  var rg=sh.getDataRange();
  var vA=rg.getDisplayValues();
  var bA=rg.getBackgrounds();
  var v=[];
  var b=[];
  var a=0;
  for(var i=0;i<vA.length;i++)
    if(bA[i][7]=='#ff0000' && !isNaN(vA[i][7]) && Number(vA[i][7])>0) 
      bA[i][7]='#ffffff';
      for(var j=0;j<=vA[i][7];j++) 
        v.push(vA[i]);
        b.push(bA[i]);
      
    
  
  sh.clearContents();
  var org=sh.getRange(1,1,v.length,v[0].length).setValues(v);
  org.setBackgrounds(b);

动画:

enter image description here

以上是关于基于单元格值的重复行的主要内容,如果未能解决你的问题,请参考以下文章

如何合并行中重复的单元格值?我的代码忽略了一些重复的值

基于单元格值隐藏行非常慢

基于 rhandsontable 中单元格值的颜色行

基于单元格值的 DataGrid 行背景

MySQL连接表行基于最低单元格值

保持基于单元格的重复行