谷歌工作表-删除带有字符的行

jjhzyzn0  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(308)

我正在使用一个既有数字值又有文本值的工作表。我想做的是删除所有带有文本值的行,只保留带有数值的行。在这幅图中,a列代表我目前拥有的,b列代表我想要实现的。我有一个示例代码,可以用来删除单个值,但是我如何才能使它适用于所有字符,而不仅仅是特定的单词?

function deleteEmptyRows(){ 
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getDataRange().getValues();
  var targetData = new Array();
  for(n=0;n<data.length;++n){
    if(data[n].join().replace(/,/g,'')!=''){ targetData.push(data[n])};
    Logger.log(data[n].join().replace(/,/g,''))
  }
  sh.getDataRange().clear();
  sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
}

而且,不一定是这个解决方案起作用。我正在寻找最好的解决办法。这只是我发现的一个例子。

siv3szwd

siv3szwd1#

对于您的示例,它可能如下所示:

function deleteEmptyRows(){ 
  var sh = SpreadsheetApp.getActiveSheet();
  var data = sh.getDataRange().getValues();
  var targetData = new Array();
  for(var n = 0; n < data.length; n++){
    var cell = data[n][0].toString().replace(/-/g,'') // remove dashes
    if (!isNaN(cell)) targetData.push(data[n]); // if the content looks like a number
  }
  sh.getDataRange().clear();
  sh.getRange(1,1,targetData.length,targetData[0].length).setValues(targetData);
}
evrscar2

evrscar22#

你说它不需要是一个使用脚本的解决方案?那也许你可以用 QUERY()matches() 条款

=QUERY(A1:A,"where A matches '\d+(?:-\d+)?'",0)

我不确定当前正则表达式的用法,但它对当前显示的示例数据进行了正确匹配,其中: \d+ -1+位数。 (?:-\d+)? -可选的非捕获组,其中一个连字符后跟1+个数字。

相关问题