JSA小白 2024-06-08 08:14 采纳率: 57.1%
浏览 70
已结题

Wps js宏根据条件删除指定行

img


Wps js宏根据c列首次出现字母abcd其中任意一个字母,删除字母以上所有行。

  • 写回答

4条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-06-08 08:15
    关注

    🕖上午好,题主!目前:🟢[在线]
    📢参考通义千问、由郭老师整理提供!
    📣今日诗号:明月出天山,苍茫云海间。

    function deleteRowsBasedOnCondition() {
      // 获取当前活动工作表。
      let sheet = SpreadsheetApp.getActiveSheet();
      // 获取 C 列数据的最后一行行号。
      let lastRow = sheet.getLastRow();
      // 定义要查找的字母。
      let letters = ["a", "b", "c", "d"];
    
      // 循环遍历 C 列的每一行。
      for (let i = 1; i <= lastRow; i++) {
        // 获取 C 列当前单元格的值并转换为小写。
        let cellValue = sheet.getRange(i, 3).getValue().toString().toLowerCase();
    
        // 检查单元格值是否包含要查找的字母。
        for (let j = 0; j < letters.length; j++) {
          if (cellValue.indexOf(letters[j]) !== -1) {
            // 如果找到,删除该行及以上的所有行。
            sheet.deleteRows(1, i);
            // 退出循环,因为已经删除了目标行。
            return;
          }
        }
      }
    }
    

    使用方法:

    1. 打开您的 WPS 表格文档。
    2. 按下 Alt + F11 打开 VBA 编辑器。
    3. 在左侧的“工程”窗口中,双击“模块”文件夹。
    4. 在右侧的代码窗口中,粘贴上面的代码。
    5. 关闭 VBA 编辑器。
    6. 在 WPS 表格中,按下 Alt + F8 打开“宏”对话框。
    7. 选择“deleteRowsBasedOnCondition”宏,然后点击“运行”。

    代码说明:

    • SpreadsheetApp.getActiveSheet() 获取当前活动工作表。
    • sheet.getLastRow() 获取 C 列数据的最后一行行号。
    • sheet.getRange(i, 3).getValue() 获取 C 列第 i 行单元格的值。
    • toString().toLowerCase() 将单元格值转换为小写字符串。
    • indexOf(letters[j]) 检查单元格值是否包含要查找的字母。
    • sheet.deleteRows(1, i) 删除从第 1 行到第 i 行的所有行。

    注意:

    • 该代码将删除找到的第一个包含指定字母的行及以上的所有行。
    • 如果 C 列中没有找到包含指定字母的单元格,则不会删除任何行。
    • 该代码区分大小写。如果您需要不区分大小写地查找,请删除toLowerCase()方法。
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月8日
  • 创建了问题 6月8日