如何使用getLastRow()删除谷歌应用程序脚本中某一列范围内的单元格

用户1938985

我一直在查看 stackoverflow 以获取有关如何在 google 表格中编写脚本的一些帮助,该函数允许我删除范围内的空单元格并在完成后将它们移到(向左)。我只看到有关删除空行或列而不是范围中的单元格的问题。

这就是我正在尝试处理的数据:

示例谷歌表

我需要删除单元格 A1-A15 并转移到其他列

当前正在运行的是以下代码,但是即使列 (A) 中有我正在查看功能的数据(例如单元格 A6 中的数据),它也会删除/移动该列。

如果根据示例在最后一个和第二个到最后一个数据条目之前的 A 列中有数据,我想确保此功能不会关闭。

function blankRemoval(){
  var sheet = SpreadsheetApp.getActive().getSheetByName('sheet1');//need to call sheet by name as I have multiple tabs
  var lastRow = sheet.getLastRow()
  var cellsBlank = sheet.getRange(1,1).isBlank();

  if(cellsBlank) {
  sheet.getRange(1,1,lastRow-3,1).deleteCells(SpreadsheetApp.Dimension.COLUMNS); // shifts cells left

  }//end of if
}//end of function

所以考虑到这一点,我想我可以让变量 cellsBlank 也使用 .getRange(1,1,lastRow-3,1) 以便它只查看范围到最后一行,并从最后一行停止 3排。但是,当我使用此代码时,无论是否有数据,它都不会删除单元格(该函数运行时没有错误,但什么也没发生)。

我已经尝试了一些不同的项目来使用这个,但我正在撞墙,因为我不是一个熟练的程序员。我的猜测是它需要迭代,或者我对范围做错了。

还要注意的是,在 A 列中总是有 2 个数据条目,就像我的例子一样,数据相隔一个单元格。这是一个有助于历史回顾的条目。我想将这两个单元格保留在它们所在的位置,但将上面的空数据移动

尤里·克里希奇

大概应该是这样的:

function blankRemoval(){
  var sheet = SpreadsheetApp.getActive().getSheetByName('sheet1');
  var col_A = sheet.getRange(1,1,sheet.getLastRow()-3,1);

  if (col_A.getValues().flat().filter(String).length == 0) { // <-- if the col A is empty
    col_A.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
  }
}

.getValues() 得到一个带有值的二维数组

.flat() 将二维数组转换为一维数组

.filter(String) 从数组中删除所有空单元格

.length 获取数组的长度

这样,如果范围包含空单元格,则只有数组将没有元素(array.length = 0)

前:

在此处输入图片说明

后:

在此处输入图片说明

更新

事实证明,“A”列中的某些单元格可能包含空格。这是从范围中删除空格的修改函数:

function blankRemoval(){
  var sheet = SpreadsheetApp.getActive().getSheetByName('sheet1');
  var col_A = sheet.getRange(1,1,sheet.getLastRow()-3,1);

  var contents = col_A.getValues().flat().join('').replace(/\s+/g,'');

  if (contents == '') col_A.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果该行下某一列的任何单元格不是浮点数,该如何删除数据框中的行?

如何选择列范围内的最后一个单元格?

如何提取与另一个单元格数组中某一列的编号相同的单元格数组中的单元格行?

在动态范围内从单元格中删除最后一个逗号

如何在某一列的一个单元格内拆分项目并实现单热编码?

如果“列”单元格在一定范围内为空,如何隐藏“列”?

如何使用应用程序脚本获取某个范围内所有单元格的背景色并将背景设置为相同大小的其他范围?

excel VBA功能选择一列中的第一行,它将选择其下的所有单元格并使其处于范围内

计算未定义范围内的空白单元格数,并对下一列中的值求和

指定范围内的某一列?

使用R中的ddply中的汇总返回某一列中的第n个单元格

使用谷歌应用程序脚本将谷歌表格上的一列增加 1?

如何仅使用谷歌应用程序脚本在单元格中创建按钮?不使用插入>绘图选项

使用应用程序脚本更新一系列单元格中的公式

使用合并单元格创建新行的谷歌表格应用程序脚本问题

如何使用python在excel中的单元格范围内的单元格范围内添加数据验证

如何在单元格范围内使用 IF AND 语句

如何检查数值是否在谷歌表格中的单元格范围内?

如何使用应用程序脚本删除特定列中的空单元格?

如何使用谷歌应用程序脚本查找基于第 4 行的最后一列?

如何使用谷歌应用程序脚本找到最后一列?

如何使谷歌应用程序脚本 - 日历 createEvent() 接受来自使用数组公式填充的单元格的 GSheet 输入

查找并移动 1 列中具有相同前缀的所有单元格 - 谷歌表 - 谷歌应用程序脚本

计算应用程序脚本中的单元格以在谷歌工作表中使用

谷歌应用程序脚本中过滤行单元格的 setValue

将粘贴单元格复制到特定范围内的空单元格 - 谷歌应用程序脚本表

查找并移动以相同字符开头的 1 列中的所有单元格 - 谷歌表 - 谷歌应用程序脚本

使用 Excel 中某一列的相似单元格组合表格的行

如果另一列中的单元格使用谷歌应用程序脚本有一些数据,如何获取列中的行号?