专栏名称: Excel之家ExcelHome
excel技巧原创教程每日推送,excel表格职场模板干货仓库,图文/视频/动画等多种教学方式分享excel操作技巧教程/excel函数公式教程/excel数据透视表教程/excel图表教程/Word教程,助您轻松提高办公效率!
目录
相关文章推荐
完美Excel  ·  自定义TEXTBETWEEN函数 ·  昨天  
Excel之家ExcelHome  ·  一组常用Excel函数公式,简单高效用处多 ·  3 天前  
Excel之家ExcelHome  ·  这个函数用得好,领导把你当成宝 ·  2 天前  
完美Excel  ·  判断数据行是否已全部输入数据 ·  4 天前  
完美Excel  ·  从《大奉打更人》想到的 ·  3 天前  
51好读  ›  专栏  ›  Excel之家ExcelHome

这个函数用得好,领导把你当成宝

Excel之家ExcelHome  · 公众号  · Excel  · 2025-01-06 07:45

正文

小伙伴们好啊,今天咱们分享TOCOL函数的几个典型应用。

这个函数目前可以在Excel 365和最新的WPS表格中使用,作用是将多列的区域或数组转换为单列。函数用法为:

=TOCOL(要转换的数组或引用, [是否忽略指定类型的值], [按行/列扫描])

其中第二参数为0或者省略该参数时,表示保留所有值。为1表示忽略空白,为2表示忽略错误,为3表示忽略空白和错误。

第三参数指定扫描数组的方式,如果省略该参数或者参数值为FALSE,表示按行扫描,如果参数值为TRUE,则表示按列扫描。通常情况下不需要特别设置该参数。


1、在多行多列中提取员工名单

如下图所示,希望在多行多列的值班表中,提取出不重复的人员名单。


G2单元格输入以下公式,按回车即可:

=UNIQUE(TOCOL(B2:E8,1))

TOCOL(B2:E8,1)部分,在忽略空单元格的前提下,将B2:E8单元格区域中的姓名转换为一列,再使用UNIQUE获取唯一值。


2、按指定次数重复内容

如下图,希望根据B列的重复次数,将A列标签名称按次数重复显示,最终效果如D列所示。

D2单元格输入以下公式,按回车。

=TOCOL(IF(B2:B5>=COLUMN(A:Z),A2:A5,0/0),2)

公式中的这部分IF(B2:B5>=COLUMN(A:Z),A2:A5,0/0),分别将B2:B5中的数值与COLUMN(A:Z)得到的列号1~26进行对比,如果大于等于列号,则返回A2:A5中的标签名称,否则返回0/0,也就是错误值#DIV/0!。

这部分的计算结果如下图所示:

图中左侧白色数字为B列重复次数,顶端黄色数字为1~26的列号。

接下来使用TOCOL函数,忽略错误值,将以上数组转换为一列。


3、二维表转换为数据列表

如下图所示,希望将A~E的二维表,转换为右侧所示的数据列表,部门和姓名分两列显示。

G2单元格输入以下公式,按回车。

=HSTACK(TOCOL(IF(B2:E5<>"",A2:A5,0/0),2),TOCOL(B2:E5,1))

公式由两个TOCOL函数组成。

先看第一部分TOCOL(IF(B2:E5<>"",A2:A5,0/0),2)。

使用IF函数进行判断,如果B2:E5不等于空白,就返回A2:A5中对应的部门名称,否则返回由0/0得到的错误值#DIV/0!:

接下来再使用TOCOL函数,忽略以上数组中的错误值将数组转换为一列。

再看公式中的TOCOL(B2:E5,1)部分,这部分的作用是将B2:E5中的姓名,在忽略空白单元格的前提下转换为一列。

最后用HSTACK函数将以上两个TOCOL的数组结果,按左右方向合并为一个数组。


4、按条件提取一列中的数据

如下图所示,希望从左侧数据表中,提取出部门为“销售”的所有姓名。

D4单元格输入以下公式,按回车。

=TOCOL(IF(B2:B9=D2,A2:A9,x),3)

首先使用IF函数进行判断,如果B列中的部门等于D2单元格中的部门,就返回A列对应的姓名,否则返回字符x。由于“x”前后没有加引号,所以当运行到这一步时,将其识别为未定义的名称而返回错误值#NAME?。

{"大春";#NAME?;"三民";"四新";#NAME?;……;#NAME?}

TOCOL函数第二参数使用3,表示忽略错误值,将以上内容转换为一列。


5、合并多表中的名单

如下图所示,1~4月的员工考勤记录,分别存放在不同工作表中。每个月都可能有新入职以及离职人员,希望从这四个表中提取出不重复的员工名单。

在“汇总表”的A1单元格输入以下公式,按回车即可。

=UNIQUE(TOCOL('1月:4月'!A:A,1))


TOCOL函数第一参数使用多工作表引用方式,表示要处理的数据范围为'1月:4月'!A:A,表示“1月”至“4月”工作表的A列,第二参数使用1,表示忽略空白单元格。

TOCOL函数将四个工作表的A列以忽略空白单元格的形式合并为一列,再使用UNIQUE函数提取出不重复名单。


好了,今天咱们的分享就是这些吧,祝各位一天好心情~~


图文制作:祝洪忠

1、点击或搜索微信公众号【 Excel之家ExcelHome】到公众号首页。

2、点击右上角【···】,在下拉菜单中点击【设为星标】。

设置星标后,小伙伴们就不用担心错过咱们的推送了!

设为星标,精彩内容不错过