2009-10-09 97 views
7

我有一個巨大的Excel工作簿,我一直在開發它來對工程項目進行一些成本分析。現在,我有一個單元,在那裏我輸入了一個儲罐的大小,它更新了包含總儲蓄的另一個單元。Excel - 將單元格更改作爲另一個單元格更改的功能的最佳方式

計算節省的過程非常複雜。我的工作手冊中有20張紙,每個手術年有一張紙,每張紙都會參考油箱尺寸。通常情況下,我會嘗試製作兩列,然後拖動公式以節省下我的x和y值,但我不認爲我可以這樣做,因爲儲蓄單元取決於其他20張表。

我想知道的是:什麼是繪製坦克大小和儲蓄之間關係的最佳方式。理想情況下,我想說「好的,在這個單元格中以1000爲單位增加0到200萬之間的值,然後爲每個增量記錄儲蓄單元的值,然後繪製,」但我似乎無法想出如何做到這一點。

回答

0

這不會是你想聽到的,但我有一個類似的複雜功能,我已經開發了一段時間,我想繪製它。我從來沒有弄清楚如何並最終意識到我需要升級我的工具。我切換到Matlab,從不回頭。

我會關注這個問題。我很好奇,看看有沒有辦法。

3

如果你確定使用一些VBA,一個簡單的解決方案可能是(ALT + F11在編輯器來獲得,然後插入模塊)

Sub GenerateData() 
    Dim curDataPt As Long, curVal As Long 
    Dim rngOut As Range, rngIn As Range, rngData As Range, rngVar As Range 

    '*** SET VALUES HERE ***' 
    Const maxVal As Long = 2000000 
    Const minVal As Long = 0 
    Const stepVal As Long = 1000 

    Set rngIn = Sheet1.Range("A1") 
    Set rngOut = Sheet1.Range("B1") 
    Set rngVar = Sheet1.Range("D1") 
    Set rngData = Sheet1.Range("E1") 
    '************************' 
    For curVal = minVal To maxVal Step stepVal 
     curDataPt = curVal/stepVal 
     rngIn = curVal 
     rngVar.Offset(curDataPt) = curVal 
     rngData.Offset(curDataPt) = rngOut 
    Next curVal 
    Sheet1.Names.Add "DataIn", rngVar.Resize(curDataPt + 1) 
    Sheet1.Names.Add "DataOut", rngData.Resize(curDataPt + 1) 
End Sub 

這裏假設你的儲存罐的大小會在A1上表1,總節省在B1。代碼中的Sheet1是表單對象的代碼名稱。在VB編輯器窗口的項目瀏覽器窗格中查看,以確保這是正確的。

使用此方法的方法是運行VBA(ALT + F8)以生成數據集並使用圖表嚮導生成圖表。但是,在選擇系列選項卡上的源數據時,對於類別(X)軸標籤,請輸入=Sheet1!DataOut,輸入=Sheet1!DataIn

現在,您可以使用不同的最小/最大/步進行遊戲,圖表會自動更新數據系列。

+0

我從來沒有在Excel中真正玩過VBA,但它對我的開發者來說很有用。感謝您的介紹,我想我現在必須更深入地檢查它:)。 – johnw188 2009-10-11 01:31:08

相關問題