|
楼主 |
发表于 2020-1-7 15:18
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 流浪铁匠 于 2020-1-7 15:43 编辑
1,纯函数无辅助列方式的首要知识点必然是函数构造内存数组与定义名称的使用
定义名称功能本身对于论坛群友来说不算难点,一般都有所了解,但这里的几个定义名称里有几个较为烧脑,特别是下文介绍的折线图从0开始后原数据从大到小累加的占比,恐怕是本图里最难的公式
2,数据源(柱形图)的自动降序,作为图表需要解决2个问题
(1)图表数据自动降序
(2)图表数据个数与数据源吻合,不出现多余错误值或0值等等
第1个问题使用加权公式难度不大(前提是对数组公式有一定了解)
第2个问题使用了row+indirect动态构造指定个数1-N的内存数组
这2个问题对于数组公式比较了解的群友来说不算难点,但如果公式不熟悉会有些吃力
3,折线图数据的构造
帕累托图的难点恐怕就是这个数据
因为帕累托图的折线图是从0开始,之后的数据是原数据从大到小排列后累加的占比值
由于多了1个0值,所以尝试后使用mmult的内存数组累加公式解决动态构造问题
这是本图最难的公式,必须对mmult有一定了解
4,折线图的百分比值显示
纯函数型内存数组的问题之一在于,内存数组不能控制格式,折线图的百分比值全部显示为对应小数数值,影响图表数据展现
解决方案,折线图的数值套嵌text后作为次坐标横坐标轴的标签名,折线图体现标签名而不是数值来解决这个问题(好久没做图了忘了这里完全能直接用修改数据标签格式解决
这里的方法适合图表数据与需要显示的数值不一致的情况,可以使用这个方法解决)
5,二八线(按照朋友的需求是80%的位置的红线)
对于图表熟悉的群友来说这个问题不难,添加1个散点利用误差线解决
唯一的问题也是保证误差线的长度,最后也是利用定义名称的公式动态解决
6,柱形图的对应数据名称
这个的动态和4的问题类似
利用公式动态引用数据源的对应名称作为水平轴标签名即可
7,添加数据报错问题
一开始时该图表公式里判断数据个数全部使用a:a引用,在a列添加新增内容后(b列还未录入数据时)在添加数据时图表会报错
原因在于a/b列数据个数不一致造成各公式的内存数组个数不一致报错
解决方案很简单,使用int(counta(a:b)/2) 来使2行均录入数据下才更新内存数组
很多人只是来拿模版的,所以这个图的定义名称我隐藏了
肯学习的,如何显示定义名称只是加了一点点阻碍
不肯学习只想获得模版的,看不看得到公式区别不大
以上为做这个图的时候的一点心得,欢迎大家关于做法进行交流学习
|
评分
-
1
查看全部评分
-
|