首页 > 解决方案 > 有没有办法通过脚本只选择和删除过滤(可见)条目?

问题描述

基本上我想应用一个或多个过滤器,然后选择所有可见的内容并删除选定的行,所有这些都必须通过脚本完成。但是,我在任何地方都看不到这样的选项(Excel 有特殊的 go to and select only visible)。例如,一个会话可能从第 7 行开始,我可以从第 7 行及以下记录宏...但是如果另一个数据集显示从 2 开始的可见行。这将如何受到影响?有没有一种简单的方法来选择所有可见的东西?

标签: google-apps-scriptgoogle-sheets

解决方案


希望库珀的回答有所帮助

我做过类似的事情,我使用了一些简化的版本 -

var j = spreadsheet.getLastRow();
var s = SpreadsheetApp.getActive().getActiveSheet();

for (var i = j; i > 1; i--) {
    if (!s.isRowHiddenByFilter(i)) {
      s.deleteRow(i);
    }
}

我从下到上的原因是如果会从上到下然后说第 2,3,4 行是否可见并且我删除了第 2 行 - 那么第 3 行现在变成第 2 行并被循环跳过到删除行。

让我知道事情的后续。

编辑: 请参阅下面的代码以了解您的最后一行与您使用过滤器的最后一行数据不同并且您只想删除特定列的数据的情况

var Avals = spreadsheet.getRange("B1:B").getValues();
var j = Avals.filter(String).length;
var s = SpreadsheetApp.getActive().getActiveSheet();

for (var i = j; i > 1; i--) {
    if (!s.isRowHiddenByFilter(i)) {
      s.getRange('A'+i+':J'+i).deleteCells(SpreadsheetApp.Dimension.ROWS);
      //here A is my starting column, and J is my ending column
    }
}

推荐阅读