如何用脚本在Google Sheets中按两行一组并依B列排序区域?
Google Sheets 脚本实现两行一组按B列排序
实现思路
要实现两行一组按B列值排序,核心是先将每两行视为一个整体,提取每组的B列排序键,排序后再将分组还原为行结构。
完整脚本代码
function sortRowsInPairs() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 替换为你的目标数据区域,比如A1:B6 const range = sheet.getRange("A1:B6"); const values = range.getValues(); // 按每两行分组,存储每组的排序键(B列值)和对应行数据 const groups = []; for (let i = 0; i < values.length; i += 2) { // 取每组第一行的B列值作为排序依据(两组B列值一致) const sortKey = values[i][1]; groups.push({ key: sortKey, rows: [values[i], values[i+1]] }); } // 按B列值升序排序分组 groups.sort((a, b) => a.key - b.key); // 将排序后的分组展开为行数组 const sortedValues = groups.flatMap(group => group.rows); // 将排序后的数据写回原区域 range.setValues(sortedValues); }
使用说明
- 打开你的Google Sheets文档,点击菜单栏的「扩展程序」→「Apps Script」进入脚本编辑器
- 将上述代码粘贴到编辑器中,修改
getRange("A1:B6")为你实际的数据区域 - 保存脚本并命名,点击运行按钮授权执行,即可完成排序
注意事项
- 确保数据行数是偶数,每组两行的结构完整
- 脚本默认按B列值升序排序,若要降序,将
groups.sort((a, b) => a.key - b.key)改为groups.sort((a, b) => b.key - a.key)
内容的提问来源于stack exchange,提问作者Martin Brandt
相关产品推荐
相关产品推荐

