首页 > 解决方案 > 根据多个条件过滤列并复制到不同的工作表

问题描述

我想将过滤后的数据从一张纸移到另一张纸上。

我可以对单个过滤值执行此操作:Money但我想过滤数组中的多个值,例如:["Money", "Society", "Impacts"]

我不知道如何遍历filterValues 数组并从不同的 filterValues 中收集所有值。

我只是为 filterValues 中的最后一个值获取过滤后的 rawData 值

我可以用不同的方式做到这一点,但我试图更好地理解过滤

function myFunction() {
  var filterValues = ["Money", "Society"]; //filter values.
  var col = 5; // column "E".
  var sheetName = "Elements";

  var ss      = SpreadsheetApp.getActiveSpreadsheet();
  var sht     = ss.getSheetByName(sheetName);
  var rng     = sht.getDataRange();
  var rawData = rng.getDisplayValues();
  
  var out = rawData.filter(dataFilter);
  
  function dataFilter(arr) {
      return arr[col-1]== filterValues;
  }

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

试过这个

for (var i = 0; i <= filterValues.length-1; i++) {
  var out = rawData.filter(dataFilter);
  
  function dataFilter(arr) {
      return arr[col-1]== filterValues[i];
    }
   }

标签: google-apps-scriptfilterv8

解决方案


您可以像在 SumProduct 中使用的那样,将基本过滤器函数与数组语法结合使用。示例:=filter(List!A:A,(List!A:A="Society")+(List!A:A="Money"))

我认为您不需要使用 Google App Scripts。查看此电子表格

在此处输入图像描述

在此处输入图像描述


推荐阅读