DC娱乐网

将 Excel 列表中每个部门的经理移到本部门第一行

继之前教了大家如何用公式给不同的分类设置跨分类递增的序号后,又衍生出来一个新问题:如何将每个分类中特定标识的行移到分类第

继之前教了大家如何用公式给不同的分类设置跨分类递增的序号后,又衍生出来一个新问题:如何将每个分类中特定标识的行移到分类第一行?

案例:

将下图 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. 用格式刷调整格式。