我有一个包含烛台图的 Excel 工作表 - 但就这个问题而言,它可能是一个常规的 2D 折线图,或任何具有水平轴的图表。
图表的数据源不是数学函数;相反,它是代表价格的任意数据,从另一个工作表的列中读取。
我的图表比工作表窗口宽很多倍 - 并且比 Excel 窗口本身宽。我通过简单地使用工作表的普通水平滚动条来水平浏览图表,该滚动条滚动工作表,包括其中的图表。
我将按钮放在同一个工作表中,通过 VBA 代码手动调整图表的垂直刻度(Y 轴),因为当水平滚动时,变得可见的新图表值可能需要显示不同的最小和最大 Y 轴值以最佳方式。
我想用自动缩放替换手动缩放:每次滚动后,我需要知道最左边的可见图表点和最右边的 - 即第一个和最后一个可见点。从中我将计算最佳 Y 比例并将其设置到图表中。
所以我正在尝试编写 VBA 代码来检测第一个和最后一个可见点。该Chart
对象在我看来没有相关的方法或属性,到目前为止我找不到方法来做到这一点。所以这就是我的问题。
该Chart.AutoScaling
属性无济于事,因为它会影响整个图表,而我的目标是设置一个仅适用于图表当前可见部分的垂直比例。所以我需要找到图表的第一个和最后一个可见点。
此图表的用户可能拥有与 Excel 2007 一样旧的 Excel 版本,因此适用于旧版本的解决方案将是最佳的,但需要较新 Excel 版本的解决方案也会很好。
我很少发布另一个答案,所以这需要一些思考。
考虑一个仅显示选定数据部分的动态图表,而不是显示所有数据的静态图表。考虑到不是构建跨越多个屏幕宽度的图表,您可以拥有一个完全适合屏幕的图表,但用户可以确定他们想要在该图表中看到什么。
然后给用户一些控制单元格,他们可以在其中输入图表数据的起点和另一个控件,他们可以在其中确定他们希望在图表中看到多少根蜡烛/条/点。
使用用户提供的信息,您可以应用已建立的动态图表技术,例如图表范围的命名公式。然后在顶部撒上一点 VBA 以确定所选图表范围的最小值和最大值。
如果您想查看该技术的示例,请告诉我,我会添加一个链接。与滚动从窗口左侧和右侧消失的图表相比,这确实并不难,而且用户体验要好得多。
编辑:我创建了一个示例文件,您可以使用此Dropbox 链接下载
您需要为此文件启用宏。
顶部图表显示所有数据。
第 26 行中的图表使用动态范围。用户可以操纵 F17 和 F18 来选择起点和要绘制的行数。然后,第 26 行中的图表使用 Excel 默认值来适当填充值轴,就像 Excel 一样。
第 42 行中的图表(喜欢那个数字)覆盖了 Exel 默认值,并分别使用 F23 和 F24 中的值作为最小值和最大值。这是通过工作表更改事件宏完成的,该宏在工作表中的任何单元格发生更改时运行。
有无数种方法可以微调和改进这种方法,例如,仅在 F23 或 F24 中的图表参数发生变化时才触发宏,但这不是重点。
关键是您可以使用动态范围名称在图表中显示您的数据选择。没有任何代码,但让 Excel 决定 Y 轴的最小值和最大值应该是什么。就像 D26 中的图表一样。
如果您想更好地控制 Y 轴的最小值和最大值,请使用 D42 中的代码版本和图表。
很高兴回答问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句