2009-10-09 93 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

相关问题