Google Sheets技术需求:复制B2B表并删除指定条件行
Google Sheets 复制工作表并批量删除指定行操作方案
操作要求
保留原B2B工作表不编辑,基于它复制出名为2B的新表,然后在2B表中删除满足以下任一条件的行:
- H列内容为
Yes或Y(不区分大小写) - F列(Invoice value)与J列(Taxable value)数值完全相同
- J、K、L三列数值均为0
方法一:手动筛选删除(适合数据量较小的场景)
复制并重命名工作表
- 右键点击原「B2B」工作表标签,选择「复制」
- 将复制后的工作表重命名为「2B」
按条件逐步清理行
- 处理H列含Yes/Y的行:选中H列,点击顶部「数据」→「创建筛选器」,点击H列的筛选按钮,只勾选
Yes和Y,选中所有显示的行,右键选择「删除行」 - 处理F与J列数值相同的行:插入辅助列(比如M列),在M2单元格输入公式
=IF(F2=J2,"删除",""),下拉填充至所有数据行;筛选M列为「删除」的行,选中后删除 - 处理J/K/L均为0的行:插入辅助列(比如N列),在N2单元格输入公式
=IF(AND(J2=0,K2=0,L2=0),"删除",""),下拉填充至所有数据行;筛选N列为「删除」的行,选中后删除 - 最后删除M、N这两个辅助列
- 处理H列含Yes/Y的行:选中H列,点击顶部「数据」→「创建筛选器」,点击H列的筛选按钮,只勾选
方法二:Google Apps Script 批量处理(适合大数据量)
用脚本自动遍历并删除符合条件的行,效率更高:
- 打开「2B」工作表,点击顶部「扩展程序」→「Apps Script」
- 删除默认代码,粘贴以下脚本(注意替换表头名称为你表格里的实际表头):
function deleteUnwantedRows() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2B"); const data = sheet.getDataRange().getValues(); const headers = data[0]; // 替换成你表格中对应列的实际表头名称 const hColHeader = "这里填H列的表头"; const fColHeader = "Invoice value"; const jColHeader = "Taxable value"; const kColHeader = "这里填K列的表头"; const lColHeader = "这里填L列的表头"; // 获取各列的索引 const hColIndex = headers.indexOf(hColHeader); const fColIndex = headers.indexOf(fColHeader); const jColIndex = headers.indexOf(jColHeader); const kColIndex = headers.indexOf(kColHeader); const lColIndex = headers.indexOf(lColHeader); // 从最后一行往上删,避免索引错乱 for (let i = data.length - 1; i >= 1; i--) { const row = data[i]; const hVal = row[hColIndex]?.toString().toLowerCase(); const fVal = row[fColIndex]; const jVal = row[jColIndex]; const kVal = row[kColIndex]; const lVal = row[lColIndex]; // 判断是否满足删除条件 const shouldDelete = (hVal === "yes" || hVal === "y") || (fVal === jVal && !isNaN(fVal) && !isNaN(jVal)) || (jVal === 0 && kVal === 0 && lVal === 0 && !isNaN(jVal) && !isNaN(kVal) && !isNaN(lVal)); if (shouldDelete) { sheet.deleteRow(i + 1); // 表格行号从1开始,数组索引从0开始,所以加1 } } }
- 点击脚本编辑器顶部的「运行」按钮,首次运行需要授权,按照提示完成权限验证即可自动执行删除操作
内容的提问来源于stack exchange,提问作者Rajesh Shah
相关产品推荐
相关产品推荐

