简单介绍一下TOROW/TOCOL函数

职场   职场   2024-11-14 07:55   福建  


HI,大家好,我是星光


今天给大家分享的表格技巧是两个工作中比较常用的新函数:


TOROW/TOCOL


它们的作用分别是将数据源转换为单行row或单列col的结构。


这么直白的描述似乎很正经很枯燥?打个响指,还是举两个例子吧。



丨 案例1


如下图所示的数据,A:C列包含了多列的人名,需要转换为单列。



在没有这两个函数的低版本Excel/WPS中,这类问题需要使用复杂的嵌套函数,例如,E2单元格输入公式向下复制填充:


公式看不全可以左右拍拖...▼
=OFFSET($A$1,INT(ROW(A3)/3),MOD(ROW(A3),3))&""


当然,你也可以用基操/透视表/PQ/VBA等解法,这些解法我们之前做过一篇总结推文:「多列转单列解法总结

但最简单的还是使用TOCOL函数:

=TOCOL(A2:C6)

TOCOL中的COL是COLUMN的缩写,也就是列的意思,它的作用是将数据源转换为单列结构。


基本语法如下:


=TOCOL(    区域或数组,    是否忽略空白/错误值,    转换的方向是行还是列)


一共有3个参数,第1参数是必需的,表示数据源,第2和第3参数可选,其中第2参数用于设置对空白或者错误值的处理方式,第3参数设置转换的优先方向,先行后列或先列后行。


如下图所示的数据为例,依然需要将多列数据转单列,只不过数据源中包含了空白单元格,转换后的结果需要忽略这些空白单元格。



参考公式如下:


=TOCOL(A2:C6,1)


第2参数设置为1,表示忽略空白值。



TOCOL公式默认是按照先行后列的方向转换数据,如果你需要先列后行,可以将第3参数设置成一个非0的数字,一般是设置为1。


=TOCOL(A2:C6,1,1)


先列后行的转换方向👆



丨 案例2


打个响指,接下来,看一个稍微复杂的案例。


如下图所示的数据,左侧是一张二维成绩表,需要转换成右侧一维表的样式。



什么是二维表什么是一维表?两者之间有何优劣?为什么要将二维表转换为一维表?……我们在之前的推文「二维表和一维表」详细讲解过了,像我这么懒的人,这里就不重复了。


这类问题最简单的方法是使用PQ,不过如果你使用的是WPS,又需要返回一个动态更新的结果的话…………函数也挺好的。

=LET(  _姓名,TOCOL(IF((B2:D6>0)+1,A2:A6)),  _科目,TOCOL(IF((B2:D6>0)+1,B1:D1)),  _数值,TOCOL(B2:D6),  _结果,HSTACK(_姓名,_科目,_数值),  _结果)

解析一下公式。

_数值,TOCOL(B2:D6)

这条公式将值区域转换为单列结构,这是你已经知道的——别说你这就忘了


_姓名,TOCOL(IF((B2:D6>0)+1,A2:A6))


这条公式返回和成绩数量对应的单列的姓名。其中IF((B2:D6>0)+1,A2:A6)部分,if的判断条件是和姓名区域同等尺寸的数值1,也就根据成绩返回对应的姓名,结果如下:



然后使用TOCOL函数将IF返回的结果转换为单列结构即可。



科目部分是相同的计算方法,最后使用HSTACK函数将姓名、科目和成绩~3列数据合并成一个二维数组。


……

如果你使用的表格的版本是Excel 365的话,使用GROUPBY函数可能是更好的解决方案。


公式看不全可以左右拍拖...▼
=GROUPBY(  A2:A6,  B2:D6,  IF({1,0},LAMBDA(x,@x),TOCOL(B1:D1)),  0,0)

GROUPBY函数是微软近期推出的一个新函数,我们前几天发过相关教程,感兴趣的朋友可以阅读→_→「GROUPBY


……


最后再提一下TOROW函数,它的作用是将数据源转换为单行结构,参数与用法和TOCOL都极其相似,你会用TOCOL,自然就会用TOROW,所以这里咱们就提一下,提完了,再见。



……




需要系统学习Excel,却找不到优质教程?学习Excel的过程中遇到疑难问题,却找不到人及时作出解答?

加入我的付费社群,学习+训练+答疑,与6000+在线会员一起,同微软最有价值专家MVP同行,全面精进Excel之道

🚂>>~

加入我的付费会员,全面学习Excel
透视表 函数 图表 VBA PQ想学啥学啥
👀

本文由公众号“Excel星球”首发。
点击阅读原文系统学习Excel!

Excel星球
微软全球最有价值专家(Excel MVP),上千篇原创图文和视频教程随学随用,随用随查,建议常用Excel的职场人关注。
 最新文章