2010-08-23 94 views
1

我正試圖在Excel 2003中將數據更改爲格式化一個圖表的宏。基本上,我總是有20個X值和Y值;然而,價值是具體數據(我正在製作股票價格圖表,這將根據我正在分析的股票而改變)。我試圖讓我的Y軸穿過X軸的單元格B8的值;無論如何用宏來做到這一點?因爲我無法將軸交叉到單元格的位置。另外,我想將軸的最小值更改爲單元格B8。另外,我希望宏根據我放入的數據(即邏輯間隔)來自動調整購物車以查看邏輯。Excel VBA:如何使用新數據在Excel中格式化圖表?

這裏的圖表類型是一個散點圖,其中描述是:「由無標記線連接的數據點散點圖」。非常感謝你。

回答

0

這大約是你所需要的(沒有時間在這裏進行測試,並得到詳細精確的):

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

您可能還需要設置

ActiveChart.Axes(xlCategory).Crosses = xlAxisCrossesCustom 

和周圍是否有點玩使用值或類別。

1

我認爲這不可能動態將截距值鏈接到單元格 - 這只是基於這樣一個事實,即選擇截距值的UI需要明確的值,而不是允許您選擇細胞。

在VBA,但是,一旦你從單元讀取所需的值,做

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

(與您的圖表名稱)

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. _ 
    [email protected] 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 

享受。