2009-10-09 17 views
7

Tengo un enorme libro de trabajo de Excel que he estado desarrollando para hacer algunos análisis de costos de un proyecto de ingeniería. En este momento, tengo una celda donde ingreso el tamaño de un tanque de almacenamiento, que actualiza otra celda que contiene el ahorro total.Excel: la mejor forma de graficar el cambio de una celda en función del cambio de otra celda

El proceso de cálculo de los ahorros es bastante complejo. Hay 20 hojas en mi libro de trabajo, una para cada año de operación, y cada una de ellas hace referencia al tamaño del tanque. Normalmente trataría de hacer dos columnas y arrastrar la fórmula de los ahorros hacia abajo para obtener mis valores de xey, pero no creo que pueda hacer esto ya que la celda de ahorro depende de otras 20 hojas.

Lo que quiero saber es esto: ¿Cuál es la mejor manera de graficar la relación entre el tamaño del tanque y el ahorro? Idealmente, me gustaría decir "OK, varíe el valor en esta celda entre cero y 2 millones en incrementos de 1000, luego registre el valor de la celda de ahorro para cada uno de estos incrementos, luego trace", pero no puedo para descubrir cómo hacer que eso suceda

Respuesta

7

Usted tendrá que usar uno de los "qué pasaría si" herramientas de análisis, específicamente tablas de datos o escenarios, dependiendo del número de variables de entrada:

análisis Y si, en general:

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

tablas de datos son probablemente la mejor opción si usted tiene 1 o 2 variables de entrada:

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

+0

Esto es super, súper genial; Exactamente lo que estaba buscando. ¡Gracias! – johnw188

0

Esto no va a ser lo que quieres escuchar, pero tenía una función similarmente complicada que había desarrollado durante un período de tiempo y quería graficarla. Nunca entendí cómo hacerlo y eventualmente llegué a la conclusión de que necesitaba actualizar mis herramientas. Me cambié a Matlab y nunca miré hacia atrás.

Estaré siguiendo esta pregunta con interés. Tengo curiosidad por ver si hay una manera.

3

Si estás bien utilizando algún VBA, una solución simple puede ser (+ F11 ALT para entrar en el editor, a continuación, insertar el módulo)

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 

Esto supone que el tamaño de su tanque de almacenamiento va en A1 en la hoja 1 y el ahorro total está en B1. Sheet1 en el código es un nombre de código para el objeto de hoja. Mire en el panel del explorador del proyecto en la ventana del editor de VB para asegurarse de que esto sea correcto.

La forma de utilizar esto sería ejecutar el VBA (ALT + F8) para generar el conjunto de datos y utilizar el asistente de gráficos para generar un gráfico. Sin embargo, al seleccionar los datos fuente en la pestaña de la serie, ingrese =Sheet1!DataOut para valores y =Sheet1!DataIn para etiquetas de eje de categoría (X).

Ahora puede jugar con variaciones mín/máx/paso y la tabla actualizará automáticamente la serie de datos.

+0

Nunca había jugado realmente con VBA en Excel, pero de alguna forma habla al lado de desarrollador. Gracias por la introducción, creo que tendré que verificarlo con más profundidad ahora :). – johnw188

Cuestiones relacionadas