我有一列有 40 个不同的数字,从 1.. 到 40 列出。当我在另一行的上方或下方插入一行时,这个新行的编号应该是 41,忽略序列。任何数字都不应出现两次或被删除。
这个想法是每行都有唯一的 ID,并且行数可以增加。
这个想法的函数在谷歌电子表格的谷歌脚本中看起来如何?
我用脚本单元函数和正常的给定函数尝试了它,但不幸的是我被卡住了。
感谢您的任何帮助!
我有一列有 40 个不同的数字,从 1.. 到 40 列出。当我在另一行的上方或下方插入一行时,这个新行的编号应该是 41,忽略序列。任何数字都不应出现两次或被删除。
这个想法是每行都有唯一的 ID,并且行数可以增加。
这个想法的函数在谷歌电子表格的谷歌脚本中看起来如何?
我用脚本单元函数和正常的给定函数尝试了它,但不幸的是我被卡住了。
感谢您的任何帮助!
下面的这个脚本严格按照您的要求执行。这也意味着它仅在新插入的行单元格为空时才有效。(由于第二个循环中的 ++maxval ,它可以填充多个插入的行)。如果您在最后一行之后添加一个空行(实际上 ID 单元格必须为空,但此行中必须有某些内容以便脚本“看到”它),它将不起作用,但这是非常合乎逻辑的!
function fillRowNumber(){
var col = 1 ; // this for column A ! change to your needs
var sh = SpreadsheetApp.getActiveSheet();
var dataincol = sh.getRange(1,col,sh.getMaxRows(),1).getValues();
var maxval =0
for(n=0;n<dataincol.length;++n){
if(Number(dataincol[n][0])>maxval){ maxval=Number(dataincol[n][0])}
}
for(n=1;n<sh.getLastRow();++n){
if(dataincol[n-1][0] == ''){ dataincol[n-1][0]=maxval+1;++maxval}
}
sh.getRange(1,col,sh.getMaxRows(),1).setValues(dataincol);
}