如何根据下拉选择自动将Paid in full状态行移至单独工作表?
谷歌表格自动转移「已全额支付」行的两种简便方案
方案一:用QUERY函数自动同步显示(无需移动行)
如果只想让「已全额支付」工作表自动展示符合条件的内容,不删除原表行,用这个方法最省事:
- 打开表格,切换到Sheet2,将其重命名为「已全额支付」
- 在「已全额支付」表的A1单元格输入公式:
=QUERY(跟踪!A:Z, "SELECT * WHERE ColX = 'Paid in full'", 1)- 把
ColX替换成状态列的对应列号(比如状态在D列,就写Col4) - 末尾的
1表示包含表头,无表头则改成0
- 把
- 完成设置后,只要「跟踪」表里的状态改为
Paid in full,「已全额支付」表会自动同步显示该行,原表行保留不变。
方案二:用简单脚本实现真正的行移动(原表删除该行)
要是需要把符合条件的行从「跟踪」表彻底移至「已全额支付」表,用这个脚本:
- 打开表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」
- 删除默认代码,粘贴以下内容:
function movePaidRows() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getSheetByName('跟踪'); const targetSheet = ss.getSheetByName('已全额支付'); const statusCol = 4; // 状态列的列号,比如D列填4,按需修改 const data = sourceSheet.getDataRange().getValues(); // 从下往上遍历,避免删行后索引混乱 for (let i = data.length - 1; i >= 1; i--) { // 跳过表头行 if (data[i][statusCol - 1] === 'Paid in full') { targetSheet.appendRow(data[i]); sourceSheet.deleteRow(i + 1); } } }
- 保存脚本,命名为「MovePaidRows」即可
- 设置自动触发:点击左侧「触发器」→「添加触发器」,函数选
movePaidRows,事件源选「从电子表格」,事件类型选「编辑时」,保存后,每次在「跟踪」表将状态改为Paid in full,该行会自动移至「已全额支付」表,原表对应行被删除。
内容的提问来源于stack exchange,提问作者Frontier Hardwood Flooring
相关产品推荐
相关产品推荐

