http://www.pptjcw.com

将多列的区域或数组合并成一列,就用TOCOL函数

    今天分享TOCOL函数的几个典型应用。
    这个函数目前可以在Excel 365和最新的WPS表格中使用,作用是将多列的区域或数组转换为单列。函数用法为:
    =TOCOL(要转换的数组或引用, [是否忽略指定类型的值], [按行/列扫描])
    其中第二参数为0或者省略该参数时,表示保留所有值。为1表示忽略空白,为2表示忽略错误,为3表示忽略空白和错误。
    第三参数指定扫描数组的方式,如果省略该参数或者参数值为FALSE,表示按行扫描,如果参数值为TRUE,则表示按列扫描。通常情况下不需要特别设置该参数。

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

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

    将多列的区域或数组合并成一列,就用TOCOL函数

    G2单元格输入以下公式,按回车即可:
    =UNIQUE(TOCOL(B2:E8,1))

    将多列的区域或数组合并成一列,就用TOCOL函数

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

    2、按指定次数重复内容

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

    将多列的区域或数组合并成一列,就用TOCOL函数

    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函数

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

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

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

    将多列的区域或数组合并成一列,就用TOCOL函数

    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函数,忽略以上数组中的错误值将数组转换为一列。

    将多列的区域或数组合并成一列,就用TOCOL函数

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

    将多列的区域或数组合并成一列,就用TOCOL函数

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

    AD:【[广告]跟众多微软MVP一起学Office】点击加入吧!

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:从身份证号码中提取信息,这些公式必须会 下一篇:一对多查询的4种解法,你最喜欢哪一种?

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读