下面通过excel365新函数来分享表格转置的具体案例。如下图所示:
需要把左边的表格,转置为右边的表格,下面分享具体操作:
目的:表格转置
方法一:
参考公式如下:
=VSTACK({"姓名","月份","数据"},HSTACK(TOCOL(IF(B2:E6&"">0,A2:A6)),TOCOL(IF(B2:E6&"">0,B1:E1)),TOCOL(B2:E6)))
公式执行的结果如下图所示:
IF(B2:E6&"">0,A2:A6)这个是判断B2:E6&""为空单元格,一样返回A2:A6的结果,具体如下图所示:
这个的意思就是A2单元格对应的是B2:E2区域单元格,且返回与B2:E2区域相同的区域结果都为A2。
B2:E6没有数据,一样返回A2:A6的结果。如下图所示:
TOCOL(IF(B2:E6&"">0,A2:A6)),这个是通过TOCOL函数把IF(B2:E6&"">0,A2:A6)返回的数据,转为一列。结果如下图所示:
HSTACK(TOCOL(IF(B2:E6&"">0,A2:A6)),TOCOL(IF(B2:E6&"">0,B1:E1)),TOCOL(B2:E6)),这个是通过HSTACK函数把TOCOL函数转为列的数据,横向堆叠为一个三列数据的数据表,结果如下图所示:
VSTACK({"姓名","月份","数据"},HSTACK(TOCOL(IF(B2:E6&"">0,A2:A6)),TOCOL(IF(B2:E6&"">0,B1:E1)),TOCOL(B2:E6))),这个是通过VSTACK函数把表头添加在最上边,就得到了如下的结果。如下图所示:
方法二:
参考公式如下:
=VSTACK({"姓名","月份","数据"},TEXTSPLIT(TEXTJOIN(",",,A2:A6&"-"&B1:E1&"-"&B2:E6),"-",","))
公式执行的结果如下图所示:
A2:A6&"-"&B1:E1&"-"&B2:E6,这个是把姓名、月份和数据通过"-"横杠隔开连接起来得到新的字符串,具体结果如下图所示:
TEXTJOIN(",",,A2:A6&"-"&B1:E1&"-"&B2:E6),这个是通过TEXTJOIN函数把A2:A6&"-"&B1:E1&"-"&B2:E6字符串通过","逗号隔开,连成一串字符串,结果如下图所示:
TEXTSPLIT(TEXTJOIN(",",,A2:A6&"-"&B1:E1&"-"&B2:E6),"-",","),这个是通过TEXTSPLIT函数把TEXTJOIN函数连接起来的字符串进行拆分,以"-"横杠为行分隔符,以","逗号为列分隔符,得到的结果如下图所示:
VSTACK({"姓名","月份","数据"},TEXTSPLIT(TEXTJOIN(",",,A2:A6&"-"&B1:E1&"-"&B2:E6),"-",",")),这个是通过VSTACK函数把表头添加,结果如下图所示:
excel365新函数的应用,这仅是一个小例,它们的强大处理数据的功能,可以解决更多和更复杂的问题,这个仅仅是一个例子供大家学习参考。