#告别007和996,轻松快乐地办公#
在工作中我们通常会遇到这样一种情况,将一行或一列的数据,转换成多行多列的表格.
如果你打开一份PDF文件,将其中表格的数据复制到Excel,你会发现,所有数据都在同一列。这时候,你需要将其转换成多行多列。今天来介绍一组组合公式,来实现这一功能。
以下是一行数据:

现在我们希望将其转换成2行5列的表格,我们在A3单元格输入以下公式:
=INDEX(A1:J1,,SEQUENCE(2,5))
公式输出结果如下:

可以看到,内嵌函数sequence(2,5)是index函数的列参数,而sequence的两个参数,分别是行数和列数,2*5=10。
如果上面一行数据是一列数据(A1~A10),将其转换成2行5列的公式则为:
=INDEX(A1:J1,SEQUENCE(2,5),)
注意:Sequence函数现在变成了Index函数的行参数。
现在反过来,如果要将表格的数据,排列成一行或一列展示,有2种办法:
一种办法是将Excel表格另存为PDF格式,再打开PDF文件,将表格数据复制到Excel表里,就转换成一列了。如果想将行转换为列,用复制-粘贴-转置的办法即可。

另一种办法是用公式,方法如下:
我们在A6单元格输入以下公式:
=TRANSPOSE(FILTERXML(SUBSTITUTE("<a><b>"&TEXTJOIN("\",,A3#)&"</b></a>","\","</b><b>"),"//b"))
公式输出的结果如下(一行):

如果想变成一列数据,只需要把TRANSPOSE去掉,公式变成:=FILTERXML(SUBSTITUTE("<a><b>"&TEXTJOIN("\",,A3#)&"</b></a>","\","</b><b>"),"//b")
公式解读如下:
公式的A3#等同于A3~J3, 公式所在的单元格地址+# 即选择该公式输出的所有结果区域
TEXTJOIN("\",,A3#), 将表格的单元格文本合并到一个单元格下,并以“\”分隔
Filterxml+substitute:将一串以“\”分隔的文本进行拆分;

以上组合公式太复杂,可以将其设置为快捷短语,方便调用。

注意:公式中的分隔符,需要与需拆分文本的分隔符一致。

你学会了吗?你还有别的方法来实现同样的功能吗?
关注我,学习更多的办公技巧,让你在职场中如鱼得水!谢谢😊。