2009-10-09 10 views
7

J'ai un énorme classeur excel que j'ai développé pour faire une analyse des coûts d'un projet d'ingénierie. À l'heure actuelle, j'ai une cellule où j'entre la taille d'un réservoir de stockage, qui met à jour une autre cellule qui contient le total des économies.Excel - Meilleure façon de tracer le changement d'une cellule en fonction du changement d'une autre cellule

Le processus de calcul des économies est assez complexe. Il y a 20 feuilles dans mon classeur, une pour chaque année de fonctionnement, et chacune d'entre elles fait référence à la taille du réservoir. Normalement, j'essaierais de faire deux colonnes et de faire glisser la formule des économies pour obtenir mes valeurs x et y, mais je ne pense pas que je puisse le faire car la cellule d'épargne dépend de 20 autres feuilles. Ce que je veux savoir est ceci: Quelle est la meilleure manière de représenter graphiquement la relation entre la taille du réservoir et l'épargne. Idéalement, je voudrais dire "OK, variez la valeur dans cette cellule entre zéro et 2 millions par incréments de 1000, puis enregistrez la valeur de la cellule d'épargne pour chacun de ces incréments, puis tracer," mais je ne peux pas sembler pour comprendre comment y arriver.

Répondre

7

Vous voulez utiliser l'un des « what-if » outils d'analyse, en particulier les tableaux de données ou scénarios, en fonction du nombre de variables d'entrée:

analyse par simulation en général:

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

tableaux de données sont probablement votre meilleur pari si vous avez 1 ou 2 variables d'entrée:

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

+0

C'est super, super cool; exactement ce que je cherchais. Merci! – johnw188

0

Cela ne va pas être ce que vous voulez entendre, mais j'ai eu une fonction aussi compliquée que j'avais développée sur une période de temps et je voulais la représenter graphiquement. Je n'ai jamais compris comment et finalement réalisé que j'avais besoin de mettre à jour mes outils. Je suis passé à Matlab et je n'ai jamais regardé en arrière.

Je vais suivre cette question avec intérêt. Je suis curieux de voir s'il y a un moyen.

3

Si vous êtes OK avec une VBA, une solution simple est peut-être (ALT + F11 pour obtenir dans l'éditeur, puis insérez le module)

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 

Cela suppose la taille de votre réservoir de stockage va dans A1 sur la feuille 1 et les économies totales sont en B1. Sheet1 dans le code est un nom de code pour l'objet de feuille. Regardez dans le volet de l'explorateur de projet dans la fenêtre de l'éditeur VB pour vous assurer que c'est correct.

La façon d'utiliser ceci serait d'exécuter le VBA (ALT + F8) pour générer l'ensemble de données et utiliser l'assistant de graphique pour générer un graphique. Toutefois, lorsque vous sélectionnez les données source dans l'onglet Série, entrez =Sheet1!DataOut pour les valeurs et =Sheet1!DataIn pour les étiquettes des axes de catégorie (X).

Maintenant, vous pouvez jouer avec des variations min/max/pas et le graphique mettra automatiquement à jour les séries de données.

+0

Je n'avais jamais vraiment joué avec VBA dans Excel, mais ça parle un peu au développeur. Merci pour l'intro, je suppose que je vais devoir le vérifier plus en profondeur maintenant :). – johnw188

Questions connexes