一、引言
作为一名教师,我常常需要处理各种各样的学生数据,包括期末成绩、课堂表现、作业完成情况等等,这些数据往往以不同的表格格式呈现,让人眼花缭乱。比如从教务系统导出的数据往往是一维表,但汇报时需要做成二维表;或者我们收集到二维表数据,想用数据透视表分析却必须转成一维表。如何快速实现这两个不同维表表格的互相转化呢?今天,就和大家分享两个WPS中的中实用的新函数TOCOL和PIVOTBY,快速实现表格数据维度互转。
二、场景再现一
2.1 需求描述
每学期末,我需要分析每位学生的各科成绩,以便安排下学期的个性化辅导。教务处发来的成绩表是这样的二维表形式:

二维表数据
当我想要了解学生的各门课程成绩分布或者哪位同学需要加强口语训练时,却无从下手。事实上,我需要的是这样一维表格格式:

一维表
从上面的一维表中,我们可以清晰了解:谁(姓名)考了什么(考试科目),结果如何(得分)。有了这个表,我可以轻松地用数据透视表计算各科平均分,或者用筛选功能找出需要特别关注的学生,后续个性化的辅导就有有序开展。
2.2 解决的方法
TOCOL函数能够将复杂的二维表格转化成简洁的一维数据,实现我们的目标。假设原始成绩表在E1:K5区域:
第一步:提取考生姓名
我们在A2单元格输入以下公式:
=TOCOL(IF(F2:K5="",NA(),E2:E5),2)
这个公式的功能是:横向遍历每一个成绩单元格,用IF函数判断是是空单元格,即是否有分数,如果有分数,就记录下对应的学生姓名,如果没有分数就返回错误值,NA() 函数用于返回错误值 #N/A。而TOCOL函数中添加参数2,可以忽略错误值,从而提取到非空单元格对应的人名。
第二步:提取考试科目
在B2单元格输入以下公式:
=TOCOL(IF(F2:K5="",NA(),F1:K1),2)
和第一步一样样的逻辑,提取每个非空单元格中分数对应的不同考试科目。
第三步:提取得分
在C2单元格输入以下公式:
=TOCOL(F2:K5,3)
这一步应用TOCOL,提取所有分数提取出来,忽略空单元格即可。
应用完以上三个公式完成后,一简一维表就自动生成了。现在我可以轻松地回答各种问题:口语平均分是多少?哪位同学需要加强阅读训练?所有答案都触手可及。
二、场景再现二
2.1 需求描述
平时我会记录每位学生的课堂表现、作业完成情况和期中考试成绩。这些记录以流水账的形式保存在一个工作表中:

到了期末,我需要给每位家长发送一份成绩单,上面要清晰展示每个孩子在各项目上的表现。而家长们习惯于看到这样的二维表格:

这种格式就像一份精心编排的课程表,一目了然。如何实现上面的一维表向二维表的转化呢?
2.2 解决办法
这时,我们就要请出大名鼎鼎的PIVOTBY函数,它可以轻松实现表格数据的转换。
假设课堂记录在A2:C13区域,在任意空白单元格输入:
=PIVOTBY(A2:A13,B2:B13,C2:C13,SUM,0,0,,0,,,0)
这个公式的意思就是:以A列的姓名为行,以B列的科目为列,将C列的得分填入对应的交叉单元格中,遇到重复数据就用SUM求和合并,最终生成一张二维成绩表。
PIVOTBY是WPS中用于将一维表转换为二维表的函数,共包含11个参数。它的基本语法如下:
=PIVOTBY(行字段, 列字段, 值, 函数, [标题], [行总计深度], [行排序顺序], [列总计深度], [列排序顺序], [筛选数组], [相对关系])
应用完PIVOTBY函数后,效率瞬间提升百倍,学生各个环节的量化成绩都一目了然地展现出来,就像一份精心准备的成绩报告单,可以直接发给家长使用。
四、写在最后
函数学习贵在规则和灵活运用。TOCOL和PIVOTBY这两个函数是不同维度表格转化的最佳函数。TOCOL擅长将宽泛的二维表转化为简洁的一维表,适合需要深入分析的场景;PIVOTBY则善于将零散的一维表归纳成清晰的二维表,适合需要直观展示的场景。掌握这两个函数,就能够在一维表和二维表之间进行自如切换。
还等什么,快去练习一下吧!