在日常工作中,你应该会遇到这种情况:你要将姓名打印出来,但是有很多行数据,如果不做任何设置直接打印,会很浪费纸张,并且也不好阅读,比如下面的姓名表,姓名很多,需要打印出来。
但是如果可以把这一列姓名,分成多列数据的话,打印出来的结果肯定符合我们的要求。
如果你不嫌麻烦的话,可以手动复制粘贴。
不过,如果要打印的表格很多的话,重复操作太浪费时间了,我们有必要提高效率。
在这里给你介绍一个函数indirect(),用它就可以实现效果了。
● indirect()函数
1. 定义:返回文本字符串所指定的引用。
2. 语法结构:indirect(ref_text,[a1])
①. Ref_text:为对单元格的引用。
②. a1:为逻辑值,指明包含在单元格ref_text 中的引用的类型,可缺省。
● 详细步骤
在这里,我希望将姓名分成5列来打印,也就是每5个姓名为一行。那么就要找出规律来,横向是值为1的等差序列,纵向是值为5的等差数列。如果用单元格来表示,如下图所示
找出了规律,就可以输入公式了,在D1单元格输入公式:
=INDIRECT("A"&5*ROW(A1)-4+COLUMN(A1))&""
往右填充到H1,然后往下填充,直到出现空值为止。
● 公式解释
1.“5*ROW(A1)-4+COLUMN(A1)”这部分是用来计算引用单元格的行值,ROW(A1)获取A1的行号,COLUMN(A1)获取A1的列值,即变成“5*行号-4+列值”。同一行的行号不变,每5个单元格换行,所以乘以5,换行时数值增加5;同一行的列值随着往右填充加1,就形成了等差数列,但是“5*行号”会有个初始值,所以要减4 。
2.公式最后使用&""的目的是为了在往下填充时,如果姓名没有了就显示为空值。
本周预告01.21 行列转置的方法,你知道吗?
01.22 含有合并单元格的转置,数据透视表就能解决~
01.23 数据不断变化,如何实现动态求和呢?
01.24 多重判断,不妨用choose函数
01.25 一列数据转多列,真让人头疼!