分享

二维转一维,函数来解围!

 Excel情报局 2024-04-17 发布于河北

Excel情报局

职场联盟Excel

生产挖掘分享Excel基础技能
Excel爱好者大本营
用1%的Excel基础搞定99%的职场问题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万Excel爱好者聚集地
SUPER EXCEL MAN

    

大家好,今天我们来学习用函数的方法解决二维表向一维表转换的问题,以前我们可以使用Power Query编辑器或者数据透视表的方法来解决,但是总有小伙伴们说不会Power Query编辑器,也嫌弃数据透视表的方法不易理解,那么今天我们就用几个新函数组合使用完美的解决它。只要你的微软Excel版本或金山WPS表格版本足够新,就可以抢先尝尝鲜了


如下图所示

左表是款式与型号的数量表,有行标题、列标题和值区域,每一行与每一列的交叉位置确定一组数量值,很显然是典型二维表格式。现在我们想要将其转换为右表所示的一维表,特点就是说每一行为一组对应的数据



下面我们分几步一步一步的理解组合函数的原理。只要大家用心看完,肯定会豁然开朗!



解决这个问题的总体思路一定是确定一维表的款式列,以及对应的型号列和数量列,才能得到完整的一维表格式的数据。那么如何确定呢?下面我们先来看看如何确定款式列。


首先在F2单元格输入函数公式

=A2:A4&B5:D5


公式中的A2:A4&B5:D5,使用A2:A4区域的款式连接空白区域B5:D5(注意空白区域B5:D5,该区域的列数要与A2:A4区域行数保持一致),那么A2:A4区域的3个数组元素会分别与B5:D5区域内的3个空值相合并,并输出为一个新的数组,其内部数组元素如下所示,3行3列的数据。


数组结果自动溢出

{"冲锋衣","冲锋衣","冲锋衣";"派克服","派克服","派克服";"羽绒服","羽绒服","羽绒服"}


我们立即使用TOCOL函数将3行3列的内存数组元素转换为一列显示

=TOCOL(A2:A4&B5:D5)


TOCOL函数的作用是将区域的数据转换成一列


函数语法

=TOCOL (数据区域,忽略空白和错误,指定行/列扫描)


第一参数是必选项,是需要转化成列的数组。

第二参数是可选项,它有四种情况:用0表示保留所有值(省略默认),用1表示忽略空白值,用2表示忽略错误值,用3表示忽略空白和错误值。

第三参数是可选项,用FALSE表示按行扫描(省略默认),用TRUE表示按列扫描。

用TOCOL函数很容易将A2:A4&B5:D5合并后的数组,省略第二参数和第三参数后将所有数据,按先行后列的顺序合并成了一列显示。

新的内存数组自动溢出

{"冲锋衣";"冲锋衣";"冲锋衣";"派克服";"派克服";"派克服";"羽绒服";"羽绒服";"羽绒服"}



确定型号列和上面的方法是相同的原理

在G2单元格输入函数公式

=B1:D1&E2:E4


注意空白区域E2:E4,该区域的行数要与B1:D1区域列数保持一致。

输出3行3列的内存数组

{"S","M","L";"S","M","L";"S","M","L"}


用TOCOL函数将3行3列的内存数组转换为一列显示

=TOCOL(B1:D1&E2:E4)


数组自动溢出显示

{"S";"M";"L";"S";"M";"L";"S";"M";"L"}


确定数量列就更简单了

=TOCOL(B2:D4)


直接使用TOCOL函数将B2:D4区域数量转换为一列显示:

{2;4;9;7;5;10;1;7;2}



至此,款式、型号和数量列就确定好了,很巧妙的是三列数据是一一对应的,与数据源区域数据也是对应吻合的


我们还可以用HSTACK函数,直接将三个TOCOL函数相连接,一次性得到结果:

=HSTACK(TOCOL(A2:A4&B5:D5),TOCOL(B1:D1&E2:E4),TOCOL(B2:D4))


HSTACK函数官方定义:按水平顺序追加数组,即数据汇总。(以前讲过其合并的几种模型,可以去查啊,不讲了)。

HSTACK函数可以将3个数组按从左向右方向依次合并连接到一起,形成新的数组输出结果。


回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。

 

 

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多