解答网友提问:如何将一个二维的员工工作状态表转换成更加便于统计的一维表?
案例:下图 1 中整行为空的人,表示全勤状态。请将表格转换成一维表。
效果如下图 2 所示。


1. 将 G 列设置为“全勤”列 --> 在 G2 单元格中输入以下公式 --> 下拉复制公式:
=IF(SUM(B2:F2)=0,1,"")
公式释义:
如果所有假期列之和为 0,就是全勤出席;
非全勤则将结果留空。


2. 在 J2 单元格中输入以下公式 --> 回车:
=TOCOL(IFS(B2:G16,B1:G1),2)


公式释义:
IFS(B2:G16,B1:G1):
将 B2:G16 作为判断条件,就相当于 1 为 true,0 为 false;
如果为 true,则提取出同一列中 B1:G1 区域的值,否则返回错误值;
结果是一个多行多列的二维区域,效果如下图红框所示;

TOCOL(...,2):tocol 函数的作用是将区域转换成一列;参数 2 用于去除错误值。
解决方案 2:同上述方案一样,先添加“全勤”列。

2. 选中数据表的任意非空单元格 --> 选中任务栏的“数据”-->“来自表格/区域”

3. 在弹出的对话框中保留默认设置 --> 点击“确定”

表格已经上传至 Power Query。

4. 选中“姓名”列 --> 选择任务栏的“转换”-->“逆透视”-->“逆透视其他列”


5. 将“属性”列的标题修改为“状态”。

6. 删除“值”列。


7. 选择任务栏的“主页”-->“关闭并上载”-->“关闭并上载至”

8. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上传至的位置 --> 点击“确定”

右侧绿色的表格就是整理好的一维表。
