Excel VBA:如何使用新数据在Excel中格式化图表?

Excel VBA:如何使用新数据在Excel中格式化图表?,vba,excel,charts,Vba,Excel,Charts,我试图制作一个宏,在Excel 2003中设置图表格式,其中数据会发生变化。基本上,我在任何时候都有20个X值和Y值;但是,这些值是特定于数据的(我正在制作股票价格图表,该图表将根据我分析的股票而变化)。我试图使我的Y轴与X轴相交,在单元格B8中的值处;是否有任何方法可以使用宏执行此操作?因为我无法将轴交叉的位置链接到单元格。此外,我还想将轴最小值更改为单元格B8。此外,我希望宏根据我输入的数据(即逻辑间隔),自动调整购物车,使其看起来符合逻辑 此处的图表类型为散点图,其中描述为:“数据点通过无

我试图制作一个宏,在Excel 2003中设置图表格式,其中数据会发生变化。基本上,我在任何时候都有20个X值和Y值;但是,这些值是特定于数据的(我正在制作股票价格图表,该图表将根据我分析的股票而变化)。我试图使我的Y轴与X轴相交,在单元格B8中的值处;是否有任何方法可以使用宏执行此操作?因为我无法将轴交叉的位置链接到单元格。此外,我还想将轴最小值更改为单元格B8。此外,我希望宏根据我输入的数据(即逻辑间隔),自动调整购物车,使其看起来符合逻辑


此处的图表类型为散点图,其中描述为:“数据点通过无标记线连接的散点图”。非常感谢。

这大概就是您所需要的(没有时间在这里测试并获得确切的细节):

您可能还需要设置

ActiveChart.Axes(xlCategory).Crosses = xlAxisCrossesCustom

并在是否使用Value或Category的问题上稍作考虑。

这大致就是您所需要的(没有时间在此进行测试并获得确切的细节):

您可能还需要设置

ActiveChart.Axes(xlCategory).Crosses = xlAxisCrossesCustom

我认为不可能将截取值动态链接到单元格,这仅仅是因为选择截取值的UI需要显式值,而不是允许您选择单元格

但是,在VBA中,一旦从单元格中读取了所需的值,请执行以下操作:

ActiveSheet.ChartObjects("Chart 1").Axes(xlValue).CrossesAt = value

(使用图表名称)

我认为不可能将截取值动态链接到单元格-这只是基于这样一个事实,即用于选择截取值的UI需要显式值,而不是允许您选择单元格

但是,在VBA中,一旦从单元格中读取了所需的值,请执行以下操作:

ActiveSheet.ChartObjects("Chart 1").Axes(xlValue).CrossesAt = value
(使用图表名称)

“根据我输入的数据(即逻辑间隔),自动调整购物车,使其看起来符合逻辑。”

那个很有趣。下面是一个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
享受。

“根据我输入的数据(即逻辑间隔),自动调整购物车,使其看起来符合逻辑。”

那个很有趣。下面是一个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
享受