【问题标题】:Google Sheets filter values by value typeGoogle 表格按值类型过滤值
【发布时间】:2020-06-11 17:20:01
【问题描述】:

我正在寻求帮助以在 Google 表格脚本上创建过滤器。 我想要以下内容:

  • 我有一个数据库 Schedule,其中包含我想要过滤的信息的表
  • 数据库 A 更新后,我想过滤第 8 行的 Colum b,只获取包含信息且填充了单词、数字等的单元格。
  • 之后,我想复制过滤后的数据并将其粘贴到新的工作表数据“特定列上的工头”上
  • 另外,我想复制粘贴颜色、大小等格式。
  • 我有以下代码,它完成了部分工作,但我无法弄清楚它只能获取所需的特定数据
function Foreman(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var scheduleCCC_sheet = ss.getSheetByName("Schedule");
  var Foreman_sheet = ss.getSheetByName("Foreman");
  var pasteforemans = Foreman_sheet.getRange(8,2);
  var originalData = scheduleCCC_sheet.getRange(9,2,scheduleCCC_sheet.getLastRow()1,11).getValues();
  var filter1 ="";
  Foreman_sheet.getRange(8,2,Foreman_sheet.getLastRow(),11).clearContent().clearFormat();
  var data = originalData.filter(filterlogic);

  Foreman_sheet.getRange(9,2,data.length,data[0].length).setValues(data);

}

var filterlogic = function(item){
  if(item[1] == ""){
    return false;
  }else {
    return true;
  }

【问题讨论】:

  • 您好,“仅获取所需的特定数据”是什么意思?您的代码遇到什么问题? @user247560
  • 嗨,我的意思是“特定数据”是当我使用过滤器只复制我过滤的数据时;代码没有复制数据过滤器正在处理所有数据。如果您愿意,我可以让您访问该文件;请分享电子邮件;谢谢
  • 您能否分享您的工作表链接并提供您想要实现的更详细/准确的版本? @user247560
  • 好的,谢谢,您能再解释一下是什么问题吗?你想达到什么目的?

标签: google-apps-script google-sheets


【解决方案1】:

为了根据单元格不为空的条件过滤值,可以使用下面的sn-p代码:

片段

function myFunction() {
   var ss = SpreadsheetApp.openById("ID_OF_THE_SS").getSheetByName("Schedule CCC");
   var otherss = SpreadsheetApp.openById("ID_OF_THE_SS").getSheetByName("Foreman");
   var range = ss.getRange("START_ROW", "START_COL", ss.getLastRow(), ss.getLastColumn());
   var filter = range.getFilter();
   var filterCriteria = SpreadsheetApp.newFilterCriteria().whenCellNotEmpty().build();
   filter.setColumnFilterCriteria("COL_POSITION", filterCriteria);
   for (var i = 1; i <= ss.getLastRow(); i++) {
      if (ss.isRowHiddenByFilter(i) == false) {
         ss.getRange("RANGE_FROM_THE_CCC_SHEET").copyTo(otherss.getRange("RANGE_FROM_THE_FOREMAN_SHEET"));
      }
   }
}

说明

上面的代码从源表中收集过滤器并将其设置为whenCellNotEmpty 标准。然后它循环遍历数据并检查特定行是否被过滤器隐藏;如果结果是false,那么它将行及其格式复制到目标工作表上。使用copyTo 方法保留行的格式。

注意

您需要调整范围以匹配工作表中的范围,并且在循环访问源工作表中的数据时可能需要添加另一个条件。

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 2018-09-14
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多