我正在尝试制作一个宏,用于格式化Excel 2003中数据更改的图表。基本上,我总是有20 X值和Y值;但是,这些数据是特定于数据的(我正在根据我正在分析的库存来改变股票价格图表)。我试图使我的Y轴与单元格B8中的值交叉X轴;无论如何用宏来做这个吗?因为我无法链接轴与单元格交叉的位置。另外,我想将轴最小值更改为单元格B8。此外,我希望宏根据我放在那里的数据(即逻辑间隔)自动调整购物车。(
此处的图表类型是散点图,其中的描述是:“由没有标记的线连接的数据点散布”。非常感谢你。
答案 0 :(得分:1)
我认为动态将拦截值链接到单元格是不可能的 - 这只是基于用于选择拦截值的UI需要显式值,而不是允许你要选择一个单元格。
但是,在VBA中,一旦从单元格中读取了所需的值,请执行
ActiveSheet.ChartObjects("Chart 1").Axes(xlValue).CrossesAt = value
(使用您的图表名称)
答案 1 :(得分:0)
这大约是您所需要的(没有时间来测试并准确了解详细信息):
ActiveChart.Axes(xlValue).CrossesAt = Range("B8").value
您可能还需要设置
ActiveChart.Axes(xlCategory).Crosses = xlAxisCrossesCustom
并使用Value或Category来玩一点。
答案 2 :(得分:0)
“根据我放入的数据(即逻辑间隔)调整购物车自动显示逻辑。”
那个很有趣。这是一个VBA函数,它可以很好地计算滴答之间的相当间隔。
Public Function prettyVal( _
xMin As Double, _
xMax As Double, _
minBins As Integer) _
As Double
'' returns an aesthetic interval size to _
use for a plot axis or histogram bin. _
marc@smpro.ca 2010-09-01
Dim pretties
pretties = Array(1, 2, 5, 10)
Dim maxBin As Double ''maximum size of bin
Dim xScale As Double ''scale factor
With WorksheetFunction
maxBin = (xMax - xMin) / minBins
xScale = 10 ^ Int(.Log10(maxBin))
prettyVal = xScale * .Lookup(maxBin / xScale, pretties)
End With
End Function
您需要在工作表中使用它。使用最小值和最大值的地板和天花板以及相当重要的值。这使他们也很漂亮。工作表中的内容如下:
minimum plot value minVal 120
maximum plot value maxVal 980
minimum num of bins minBins 10
pretty bin size binsize 50 =prettyVal(minVal,maxVal,minBins)
low axis value minEdge 100 =FLOOR(minVal,binsize)
high axis value maxEdge 1000 =CEILING(maxVal,binsize)
number of bins numBins 18 =(maxEdge-minEdge)/binsize
享受。