旧版Excel(2019/2016等)中Filter和Sort函数的替代方案
适配Excel 2019/2016的列表合并+排序替代方案
针对Excel 365/2021中用Filter+Sort实现的双列表合并、数值降序排序需求,以下是适配旧版本的解决方案:
方案1:数组公式实现动态合并与排序
适合需要动态更新结果的场景,需使用数组公式(输入后按Ctrl+Shift+Enter确认,Excel 2019及更早版本要求)。
假设两个数据列表结构如下:
- 列表1:A列(名称)、B列(数值),范围
A2:B10 - 列表2:D列(名称)、E列(数值),范围
D2:E10
提取降序排列的数值(G2单元格)
=IFERROR(LARGE(IF(ROW($A$1:$A$17)<=ROWS($B$2:$B$10),$B$2:$B$10,$E$2:$E$10),ROW(A1)),"")
向下填充公式至出现空值,即可得到合并后降序排列的数值列。
提取对应名称(F2单元格)
=IFERROR(INDEX(IF(ROW($A$1:$A$17)<=ROWS($B$2:$B$10),$A$2:$A$10,$D$2:$D$10),MATCH(G2,IF(ROW($A$1:$A$17)<=ROWS($B$2:$B$10),$B$2:$B$10,$E$2:$E$10),0)),"")
同样向下填充,即可匹配得到对应名称。
公式说明
- 用
IF函数构建合并后的虚拟数值/名称数组,区分两个列表的范围 LARGE函数按降序提取数值,ROW(A1)控制提取的序列位置INDEX+MATCH组合匹配数值对应的名称,IFERROR处理超出数据范围的空值- 若两个列表行数不同,需调整
ROW($A$1:$A$17)的范围为ROW($A$1:$A$[总行数]),总行数为两个列表行数之和
方案2:Power Query实现可视化合并排序
适合数据量较大或需要频繁更新的场景,Excel 2016及以上内置该功能,2010/2013需安装「Power Query」插件:
- 选中第一个列表区域,点击「数据」选项卡 → 「从表格/区域」,导入至Power Query编辑器
- 重复步骤1导入第二个列表
- 在编辑器中点击「主页」→ 「追加查询」→ 「追加两个表」,完成列表合并
- 选中数值列,点击工具栏的「排序」按钮选择「降序」
- 点击「关闭并上载」,将结果加载至工作表;后续更新数据时,右键结果表选择「刷新」即可同步
方案3:手动合并排序(一次性操作)
若无需动态更新,直接手动处理即可:
- 复制第二个列表的所有内容,粘贴到第一个列表的末尾
- 选中合并后的完整数据区域,点击「数据」选项卡 → 「排序」,选择数值列作为关键字,排序方式设为「降序」
内容的提问来源于stack exchange,提问作者Daniel Leoba
相关产品推荐
相关产品推荐

