静态图表我们每个人都会做,并不困难,但是每当有数据增加的时候,就要重新选择数据范围,数据量少的时候还好,数据量大的时候就十分的麻烦了,那么有没有办法让图表随着数据的增加而自动扩展区域呢?
核心原理
涉及公式: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、右键图表,点击选择数据