【问题标题】:Google Apps Script - copy cells into a new sheet on conditionGoogle Apps 脚本 - 将单元格复制到有条件的新工作表中
【发布时间】:2021-08-24 00:56:31
【问题描述】:

我有一个包含数千行的电子表格,并且由于查找,某些条目在第一列中有“#N/A”。我希望将这些完全复制到新工作表上。

例子:

ID Other Data
#N/A row1
123 row2
#N/A row3
#N/A row4
#N/A row5
456 row6

新工作表应包含 ID 字段中带有“#N/A”的行

ID Other Data
#N/A row1
#N/A row3
#N/A row4
#N/A row5

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    只需使用过滤器公式: =过滤器(A2:B100, A2:A100="#N/A")

    【讨论】:

      【解决方案2】:

      用查询连接工作表,我会这样做:

      =query(importrange("https://docs.google.com/spreadsheets/d/ID",
      "'SHEET 1'!A2:Z"),
      "select * where Col1 = '#N/A'")
      

      您必须确定工作表之间的连接。

      【讨论】:

        【解决方案3】:

        您可以参考此示例代码,了解如何从工作表中过滤数据并使用应用程序脚本将数据写入新工作表

        示例代码:

        function onOpen() {
          var ui = SpreadsheetApp.getUi();
          // Or DocumentApp or FormApp.
          ui.createMenu('Custom Menu')
              .addItem('Filter N/A', 'FilterNA')
              .addToUi();
        }
        
        function FilterNA(){
          var sheet = SpreadsheetApp.getActiveSheet();
          var newSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet();
        
          var data = sheet.getDataRange().getDisplayValues();
          var newData = data.filter(row => ["ID","#N/A"].includes(row[0]));
          newSheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);
        }
        

        它有什么作用?

        1. 创建自定义菜单以触发复制功能
        2. 选择活动工作表并使用insertSheet() 创建一个新工作表
        3. 使用getDataRange()getDisplayValues() 读取源工作表中的数据
        4. 使用Array.filter()过滤数组,在这个例子中,我创建了一个我想要过滤的字符串列表(“ID”和“#N/A”)然后检查当前行的第1列是ID还是N/使用Array.includes()
        5. 将过滤后的数据写入新工作表中。

        输出:

        【讨论】:

        • 如果您遇到一些问题,请告诉我,以便我可以相应地更新答案,我只假设您想将过滤后的数据复制到新工作表上。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多