首页 文章

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

提问于
浏览
1

我正在尝试制作一个宏来格式化Excel 2003中数据更改的图表 . 基本上,我总是有20 X值和Y值;但是,这些值是特定于数据的(我正在根据我正在分析的库存来制作股票价格图表) . 我试图使我的Y轴与单元格B8中的值交叉X轴;无论如何用宏来做这个吗?因为我无法链接轴与单元格交叉的位置 . 另外,我想将轴最小值更改为单元格B8 . 此外,我希望宏根据我放在那里的数据(即逻辑间隔)自动调整购物车 .

此处的图表类型是散点图,其中的描述是:“由没有标记的线连接的数据点散布” . 非常感谢你 .

3 回答

  • 0

    我不能动态地将截距值链接到单元格 - 这只是基于用于选择截距值的UI需要显式值而不是允许您选择单元格的事实 .

    但是,在VBA中,一旦从单元格中读取了所需的值,就可以了

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

    (用你的图表名称)

  • 0

    这大约是您所需要的(没有时间来测试并准确了解详细信息):

    ActiveChart.Axes(xlValue).CrossesAt = Range("B8").value
    

    您可能还需要设置

    ActiveChart.Axes(xlCategory).Crosses = xlAxisCrossesCustom
    

    并且玩一下是否使用 Value 或类别 .

  • 1

    "to adjust the cart to look logical automatically depending on the data I put in there (ie logical intervals)."

    那一个很有趣 . 这是一个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
    

    请享用 .

相关问题