如何从过滤器中自动选择范围而无需手动输入?

use*_*276 5 filtering filter google-sheets google-apps-script

我想知道是否有一种方法可以根据所选过滤器自动选择单元格范围。

例子: 样本

  • 在(H 列)中设置过滤器
  • 自动选择从 A 列 (A2000) 开始的结果单元格数据:C 列 (C5000) 等 --- 这就是我陷入困境的地方。我不知道如何编写以根据所选过滤器自动选择结果单元格数据。

目前,我的锻炼是手动输入单元格,以便我可以继续编写代码。我希望我上面说得有道理。

- - 代码 - -

function ColHtoActive() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Current');  
  var crange = sheet.getRange('A7:I7350').activate();                                
  var currentCell = sheet.setCurrentCell(sheet.getRange('H7'); 
  var hSfilter = sheet.getRange('A7:I7350').createFilter(); 
  var ccC1 = sheet.getRange('H7').activate();
  var cCriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues('Inactive']).build(); 

  sheet.getFilter().setColumnFilterCriteria(8, cCriteria);    
}

function copycolA() {
  var ss = SpreadsheetApp.getActive().getSheetByName('A');
  ss.getRange('A2307').activate();
  ss.getRange('A2307:A7155').copyTo(
      ss.getActiveRange(),
      SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
      false);
}
Run Code Online (Sandbox Code Playgroud)

The*_*ter 7

您可以从 中获取过滤后的范围维度getFilter().getRange()。这将复制所有过滤范围:

function copycolA() {
  var sourceSheet = SpreadsheetApp.getActive().getSheetByName('Current');
  var targetSheet = SpreadsheetApp.getActive().getSheetByName('A');
  var sourceRange = sourceSheet.getFilter().getRange();
  sourceRange.copyTo(
    targetSheet.getRange('A1'),
    SpreadsheetApp.CopyPasteType.PASTE_NORMAL,
    false);
}
Run Code Online (Sandbox Code Playgroud)

读书:

请注意,.getValues()或其他脚本操作不会仅获得过滤后的值,而是所有值。