继之前教了大家如何用公式给不同的分类设置跨分类递增的序号后,又衍生出来一个新问题:如何将每个分类中特定标识的行移到分类第一行?
案例:将下图 1 的数据表重新排序,要求将每个部门的“经理”放到部门的第一行,其他人的顺序不变。
效果如下图 2 所示。


1. 在 J2 单元格中输入以下公式 --> 下拉复制公式:
=MATCH(A2,UNIQUE($A$2:A2),0)



公式释义:
UNIQUE($A$2:A2):提取出首行固定、末行变动的区域 $A$2:A2 中的所有唯一值;
MATCH(A2,...,0):在上述区域中查找 A2 单元格的值,返回匹配结果在整个数组中的排序数字;随着单元格下拉,要查询的值永远都在区域中的最后一个,因此排序会随着唯一值的变多而增大。
2. 在目标单元格中输入以下公式 --> 回车:
=SORTBY(A2:I15,J2:J15-(C2:C15="经理"))


公式释义:
C2:C15="经理":判断 C2:C15 区域中每个单元格的值是否为“经理”,结果为 true 或 false;
J2:J15-...:将 J2:J15 区域中的每个单元格减去上述结果,这样就会得出所有“经理”所在行的值比同部门其他人员小 1;
SORTBY(A2:I15,...):将 A2:I15 区域按照上述结果排序,就会变成这样:按部门先排序,因为不同部门的编号会递增;然后部门内部的“经理”排在最上方,因为“经理”的编号比同部门其他人小 1。
3. 用格式刷调整格式。
