前言

静态图表我们每个人都会做,并不困难,但是每当有数据增加的时候,就要重新选择数据范围,数据量少的时候还好,数据量大的时候就十分的麻烦了,那么有没有办法让图表随着数据的增加而自动扩展区域呢?


核心原理

涉及公式:offset、counta

  • offset:返回对单元格或单元格区域中指定行数和列数的区域的引用。返回的引用可以是单个单元格或单元格区域。可以指定要返回的行数和列数。(offset是区域偏移函数,结果是一个区域,在Excel中无法准确的表达出来)
      • =OFFSET(reference,rows,cols,[height],[width])
    • height与width变量的意思是将前边三个条件所选的区域往下偏移多少行,往右偏移多少列(把它理解为坐标更好懂),不懂往下看实例。
    • offset中主要涉及了
    • reference,rows,cols,height,width
    • 五个变量,正常使用height跟width不是必选的,但是我们这次的重点就是height变量
    • 函数写法
    • =OFFSET(reference,rows,cols,[height],[width])
  • counta:计算范围中不为空的单元格的个数。

=COUNTA(value1,[value2],...)

    • counta函数容易理解,即通过统计所选范围内不为空的单元格个数,这个单元格可以是数值也可是文本。
    • 函数写法
    • =COUNTA(value1,[value2], ...)

原理

运用Offset函数分别引用列的数据,在加上counta函数可以智能的判断该列有多少行,将其counta函数的结果作为height,当counta数值变动的时候,引用的区域亦会随着改变,形成一个动态范围。


步骤

1、打开表格,先将其创建一个图表先,我这以折线图为例


2、因为我们想要其数据根据表格变化,所以我们需要用到2次offset函数,分别对应横纵坐标。
我这以盈利的数据为例,我们在空白的地方输入下边函数

=OFFSET($A$1,1,1,COUNTA($B:$B)-1,1)

=OFFSET($A$1,1,1,COUNTA($B:$B)−1,1)

为什么要这样做?当然是为了方便检查函数逻辑是不是正确的呀

这个函数的意思是,以A1为参考的依据,向下1行,向左一列开始,往下选择(B列-1)的非空白单元格的个数区域,向右不扩展选择。加$是为了绝对引用,如果你没这个必要可以不加

3、为了方便引用,我们在【公式】下找到【名称管理器】,点击进去,点击新建


4、这时候会弹出一个对话框,前边的名称、范围、备注可根据个人需求选择填写,在【引用位置】处,将第2步的公式复制粘贴进去。这时候我们盈利这列的数据就可以暂告一段落了。


5、重复2-4步,将姓名一列也进行处理,需要注意的是,此时函数的变化

=OFFSET($A$1,1,0,COUNTA($A:$A)-1,1)

=OFFSET($A$1,1,0,COUNTA($A:$A)−1,1)

具体意思看第2步

6、右键图表,点击选择数据


7、在弹出的对话框中我们可以看到有个【系列】以及【类别】,我们分别点击修改


8、点击修改图表会出现如下对话框,我们要在【系列值】处进行修改。


将如上图我所选的地方保留,剩余部分删除,并在!后输入刚才你命名的名称(在【名称管理器】中的名称,不知道的可以点击去查看,注意这是y轴的,即第二列的,不要填错了)


同理将x轴也进行将修改

9、至此我们已经完成了一个随数据源增加自动扩展区域的图表了,我们可以在表格处增加修改数据,检验一下是否有效果

注意:
在输入公式的时候用的都是全角符号。