Excel - 根据另一个单元格的变化绘制单元格变化的最佳方法

时间:2009-10-09 12:50:27

标签: excel

我有一个庞大的excel工作簿,我一直在开发它来对工程项目进行一些成本分析。现在,我有一个单元格,我输入一个储存罐的大小,更新另一个包含总储蓄的单元格。

计算节省的过程非常复杂。我的工作簿中有20张,每年一张,每张都参考了坦克的大小。通常情况下,我会尝试制作两个列,然后将节省下来的公式拖动以获得我的x和y值,但我不认为我可以这样做,因为储蓄单元格依赖于其他20张纸。

我想知道的是:绘制坦克大小与储蓄之间关系的最佳方法是什么。理想情况下,我想说“好的,将这个单元格中的值在0到200万之间以1000为增量进行改变,然后记录每个增量的节省单元的值,然后绘制,”但我似乎无法理解弄清楚如何实现这一目标。

3 个答案:

答案 0 :(得分:8)

您将需要使用“假设分析”分析工具之一,特别是数据表或方案,具体取决于输入变量的数量:

一般假设分析:

http://office.microsoft.com/en-us/excel/HA102431641033.aspx

如果您有1个或2个输入变量,数据表可能是您最好的选择:

http://office.microsoft.com/en-us/excel/HP100726561033.aspx?pid=CH100648511033

答案 1 :(得分:4)

如果你可以使用一些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

这假设您的储罐大小在表1中的A1中,总节省量为B1。代码中的Sheet1是工作表对象的代码名称。在VB编辑器窗口中查看项目资源管理器窗格以确保这是正确的。

使用它的方法是运行VBA(ALT + F8)来生成数据集,并使用图表向导生成图表。但是,在系列选项卡上选择源数据时,请输入值=Sheet1!DataOut和类别(X)轴标签=Sheet1!DataIn

现在您可以使用不同的最小/最大/步数进行游戏,图表将自动更新数据系列。

答案 2 :(得分:0)

这不是你想听到的,但我有一个类似的复杂功能,我已经开发了一段时间,我想绘制它。我从未弄清楚如何并最终意识到我需要升级我的工具。我切换到Matlab,从不回头。

我会感兴趣地关注这个问题。我很想知道是否有办法。