您的位置 首页 知识

设置动态打印区域_ vba 告别反复设置打印区域! Excel实现动态分页显示数

设置动态打印区域? vba 告别反复设置打印区域! Excel实现动态分页显示数

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

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

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

微软Office LTSC 2021专业增强版 简体中文批量许可版 2024年09月更新

  • 类型:办公软件
  • 大致:2.2GB
  • 语言:简体中文
  • 时刻:2024-09-12

查看详情

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

OFFSET函数回忆:

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

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

OFFSET函数语法:

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

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

  • 行偏移数:向上(负数)或向下(正数)偏移的行数。
  • 列偏移数:向左(负数)或向右(正数)偏移的列数。
  • [高度](可选):返回区域的行数(默认为 1)。
  • [宽度](可选):返回区域的列数(默认为 1)。

开头来说我们确定OFFSET函数的第一参数,基准单元格。

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

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

我们可以通过输入公式:

=(E1-1)3

来确定行偏移数。

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

以此类推:

  • E1单元格页码为2时,G3单元格返回3,表示行偏移3行
  • E1单元格页码为3时,G3单元格返回6,表示行偏移6行
  • &8230;&8230;.

以此类推,不做解释

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

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

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

  • E1单元格页码为1时,首行日期为A2单元格日期“3月1日”
  • E1单元格页码为2时,首行日期为A5单元格日期“3月5日”
  • E1单元格页码为3时,首行日期为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函数实现动态排序筛选的技巧


返回顶部