首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不需要手动输入的情况下自动从过滤器中选择范围?

如何在不需要手动输入的情况下自动从过滤器中选择范围?
EN

Stack Overflow用户
提问于 2018-09-06 21:28:31
回答 2查看 1.6K关注 0票数 5

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

示例:

  • 在(H列)中设置过滤器
  • 自动选择结果单元格数据,开始列A (A2000):列C (C5000)等等我不知道如何根据选定的筛选器自动选择结果单元格数据。

目前,我的训练是手动输入单元格,这样我就可以继续编写代码了。我希望我在上面说得通。

-密码

代码语言:javascript
复制
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);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-07 17:39:13

您可以从getFilter().getRange()获得已过滤的范围维度。这将复制所有筛选的范围:

代码语言:javascript
复制
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);
}

改为:

请注意,.getValues()或其他脚本操作不会只获得筛选,而是所有的值。

票数 6
EN

Stack Overflow用户

发布于 2022-07-21 16:57:03

有可能

代码语言:javascript
复制
function myFilter() {
  const ss      = SpreadsheetApp.getActiveSpreadsheet(),
        sht     = ss.getSheetByName("Current"),
        rng     = sht.getDataRange(),
        rawData = rng.getDisplayValues();

  let filterValues = ["Inactive"],
        col = 8, // column "H".
        out = rawData.filter(dataFilter);
        out = [rawData[0], ...out]; //Add headers to filtered data 
  
  function dataFilter(arr) {
    return filterValues.includes(arr[col-1]);
  }

  const osh=SpreadsheetApp.getActive().getSheetByName("A"); 
  osh.clear();
  osh.getRange(1,1,out.length,out[0].length).setValues(out);
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52212388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档