excel

关注公众号 jb51net

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

告别反复设置打印区域! Excel实现动态分页显示数据的技巧

脚本之家

今天我们来解决一位同学这样的需求:动态分页显示数据。

例如A1:B10是数据源区域,E2单元格是页码(需要手动切换不同的页码),我们想要在动态打印区域即G:H列,设置每页显示3行数据源的数据,通过E2单元格的按钮切换页码。首行标题行G2:H2不计入行数,且是固定不变的。

目的:打印时不用反复设置打印区域进行打印了,始终是G3:H5区域不同页码的3行数据。

这个案例我们可以通过OFFSET函数得到解决方案。

OFFSET函数回忆:

OFFSET函数是一个动态引用函数,用于根据指定的起始位置、偏移行数和列数,返回一个单元格或区域(由行高列宽确定区域)的引用。

它常用于动态调整数据范围或构建动态公式。

OFFSET函数语法:

=OFFSET(基准单元格, 行偏移数, 列偏移数, [高度], [宽度])

基准单元格:基准位置(必填)。

首先我们确定OFFSET函数的第一参数,基准单元格。

这个很简单,我们以固定单元格位置A2单元格作为起始基准单元格,这里因为涉及不到公式的下拉填充,用到的是数组溢出结果,所以可以不必对A2单元格做绝对引用的处理。

接下来我们确定OFFSET函数的第二参数,行偏移数。

我们可以通过输入公式:

=(E1-1)*3

来确定行偏移数。

E1单元格页码为1时,G3单元格返回0,表示行偏移0行

以此类推:

以此类推,不做解释

这样我们将上述公式带入OFFSET函数的第二参数,第三参数我们列偏移数规定为0即可(不作偏移):

=OFFSET(A2,(E1-1)*3,0)

这样以A2单元格为基准,行偏移数分别向下偏移0行、3行、6行,列偏移数均为0,偏移后的单元格依次为A2单元格日期“3月1日”、A5单元格日期“3月5日”、A8单元格日期“3月10日”。

最后确定OFFSET函数的第四和第五参数,即偏移后获取数据区域的高度与宽度。

OFFSET函数的第四和第五参数:

=OFFSET(A2,(E1-1)*3,0,3,2)

因为目前偏移后的是某个单元格位置(默认高度与宽度均为1),所以我们需要在此位置上(A2、A5、A8)分别向下取高度为3,向右取宽度为2的区域。

那么得到的这三个区域就是每页的3行数据。

偏移的宽度也可以使用COLUMNS进行统计:

=OFFSET(A2,(E1-1)*3,0,3,COLUMNS(A:B))

COLUMNS(A:B)可以获取A:B区域的列数2,这样做的好处是在A:B区域插入其他列的时候,OFFSET的第五参数宽度是动态变化的。

最终的效果展示:

推荐阅读:excel表格中FILTER+SORT函数实现动态排序筛选的技巧