将每个数字加1到后续数字以确定优先级列表

时间:2017-10-04 17:16:38

标签: google-apps-script google-sheets

我想在列中的每个后续号码之后为每个号码添加+1,从我输入的号码开始,自动。

例如:

  • 我在列中有20行
  • 我的每行都有编号,1-20
  • 我认为#17(接骨木)应该优先考虑#6
  • 我将数字17更改为数字6(步骤1)
  • 水果排名#6转为#7,#7转为#8,依此类推至#20(第2步)**
  • #6之前的所有数字均不受影响

Please see example here

1 个答案:

答案 0 :(得分:1)

我认为这可以实现你想要的。

function onEdit(e) 
{
  if(e.source.getActiveSheet().getName()=='Sheet3' && e.range.getColumn()==1 && e.value != e.oldValue)
  {
    var sh=e.source.getActiveSheet();
    var row=e.range.getRow();
    //Logger.log(row);
    var vA=sh.getDataRange().getValues();
    for(var i=1;i<vA.length;i++)
    {
      if(Number(e.value) > Number(e.oldValue))
      {
        //Logger.log('flag up e.value=%s > e.oldValue=%s',e.value,e.oldValue);//moving up
        if(Number(i+1)!=row && vA[i][0]>e.oldValue && vA[i][0]<=e.value)
        {
          //Logger.log('decr vA[%s][0]=%s',i,vA[i][0]);
          vA[i][0]=vA[i][0]-1;
        }
      }
      if(Number(e.value) < Number(e.oldValue))
      {
        //Logger.log('flag down e.value=%s < e.oldValue=%s',e.value,e.oldValue);//moving down
        if(Number(i+1)!=row && vA[i][0]>=e.value && vA[i][0]<e.oldValue)
        {
          //Logger.log('incr vA[%s][0]=%s',i,vA[i][0]);
          vA[i][0]=vA[i][0]+1;
        }
      }
    }
    sh.getDataRange().setValues(vA);
    var rg=sh.getRange(2,1,vA.length-1,vA[0].length).sort({column:1,ascending:true});
  }
}

这是我的电子表格的样子:

enter image description here