excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

如何快速转换一维表与二维表? Excel一维表和二维表互转的方法

脚本之家

在实际工作中,我们经常需要对数据的结构进行转换。比如,为了更直观、方便查看数据,需要将下图左边一维表转换成如右图的二维表:

又或者为了更好的统计分析数据,需要将左边的二维表数据转换成右边的一维表格式:

一维表和二维表简介

所谓一维表是指由一个单一的行和多个列组成的数据表,一维表的行通常被称为“记录”或“行数据”,每一条记录都包含了与之相关的多个字段,每个字段则对应于一列数据,一维表中的数据可以被快速的查找、排序和过滤。比如如下表格。

这个表格由三个字段(Field)组成,分别是"Name"、"Date"和"Sales",表格中的每一行数据称为一条记录(Record),这就是一个典型的一维表。

二维表也被称为关系型表格,它由若干行和若干列组成,每一列表示一个特定的属性或数据类型,每一行则表示一条记录或数据项。每个单元格则表示一组对应行和列的数据值。通常,二维表是在SQL(结构化查询语言)中进行操作和查询的主要数据结构。比如如下表格。

这个表格的第一行表示日期,第一列表示人名,表格中的每一个数据由行标签和列标签共同赋予其属性,比如单元格B2的数据“289”代表Aileen在2023年4月1日的销售额。这是一个典型的二维表。

下面就来详细说说,怎么用函数公式实现这两种数据结构的相互转换。

1、一维表转化成二维表

❶ 提取年级变成标题行

在 D2 输入公式:

=TRANSPOSE(UNIQUE(A2:A34))

首先用 UNIQUE 函数提取 A 列不重复的年级变成一列,再用 TRANSPOSE 函数将得到的一列数据转置成一行。

效果如下图所示:

❷ 提取对应的名单

在 D2 单元格输入公式:

=FILTER($B2:$B34,$A2:$A34=D1)

用 FILTER 函数,以年级作为筛选条件,筛选出对应的名单。再将公式向右拖动填充,得到如下图右表的效果:

2、二维表转化成一维表

❶ 首先用 IF 函数判断名单区域「A2:D15」是否为空;如果为空则返回错误值 (#NAME?),否则返回第一行「A1:D1」对应的年级。

在 F1 单元格输入公式:

=IF(A2:D15="",x,A1:D1)

结果返回一个多行 4 列的数组,效果如下图「F1:I14」区域所示:

❷ 然后利用 TOCOL 函数将这组多行 4 列的数组转化成一列。

=TOCOL(
IF(A2:D15 = "", x, A1:D1),
2,
1
)

效果如下图 F 列所示:

TOCOL 是 Office 365 版本新增的函数,非常实用和强大,它可以将多数组转化为一列数据。

该函数的语法为:

=TOCOL(array, [ignore], [scan_by_column])

第一参数是需要转化成列的数组,公式中 TOCOL 函数的第一个参数 IF (A2:D15 = "", x, A1:D1) 是需要转化的数组;

第二参数可以选择是否忽略空白或错误,公式中的第二个参数是 2,表示忽略区域中的错误值;

第三参数表示扫描方式,可以设定是按行方向扫描数组还是按列方向扫描数组,默认情况下按行扫描,如果要按列扫描,则值为 TRUE 或 1。

❸ 最后再用 TOCOL 函数将姓名区域「A2:D15」,也转化成一列。

在 G1 单元格输入公式:

=TOCOL(A2:D15,1,1)

公式中的第二参数是 1,表示忽略区域「A2:D15」中的空白,转化成一列。效果如下图 G 列所示:

3、最后小结

❶ 一维表转化成二维表:首先用 UNIQUE 函数提取一列的不重复值,作为标题行;然后用 FILTER 函数,以标题作为筛选条件,提取对应的内容。

❷ 二维表格转化成一维表:当 TOCOL 函数第二参数为 2 时,忽略错误值,将标题行转化成一列,再利用 TOCOL 函数第二参数为 1 时,忽略空白,将对应的区域转化成一列。

好了,今天就说到这里结束啦~

本文来自微信公众号:秋叶 Excel (ID:excel100),作者:赵骄阳

以上就是Excel一维表和二维表互转的方法,希望大家喜欢,请继续关注脚本之家。

相关推荐:

excel图表复制到word后怎么保持原格式? Excel表格样式复制技巧

Excel通配符怎么使用? Excel表格中通配符使用技巧分享