要将人员调动记录从长格式(每人多条记录)转换为宽格式(每人一行,后面依次展示科室和调动时间),有多种方法可以实现。以下是几种常用且高效的解决方案,你可以根据自己的Excel版本和操作习惯选择。
📌 目标效果
原始数据(示例):
达到效果:
之前的方案版本是使用unique函数,和index函数,
=IFERROR(INDEX(SORT(FILTER(竖版!$K$2:$N$5000,竖版!$F$2:$F$5000=$A3),1,-1),INT((COLUMN(A2)-1)/4)+1,MOD(COLUMN(A2)-1,4)+1),"")
这个公式不仅要filter 筛选,还要用index布局格式,比较费劲。
经过摸索,发现一个新的函数 TOROW
TOROW 函数用于将数组或单元格区域转换为单行数据,支持按行或按列扫描,并可忽略空白及错误值,适用于数据展平与整理 。
- 语法结构:
=TOROW(数组,[忽略模式], [扫描方式]),仅第一个参数必填 。 - 忽略模式:0 保留所有(默认),1 忽略空白,2 忽略错误,3 忽略空白和错误 。
- 扫描方式:FALSE/0 按行扫描(默认),TRUE/1 按列扫描 。
- 适用版本:Excel 2021/2024/Microsoft 365 及新版 WPS 表格 。
所以我的优化版的公式是这样的:
=TOROW(FILTER($B$2:$C$7,$A$2:$A$7=E2),3)
不需要排布,不需要绝对值,这个公式简单易懂,把筛选结果直接torow即可!
效率提升点:排布!就那段公式index,都够琢磨一会了。
所以这个增效小技巧,我认为应该加鸡腿。