Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1276to1280
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tab mit Wertebereich rechnen + Ergebnisse loggen

Tab mit Wertebereich rechnen + Ergebnisse loggen
Christian
Liebe Excelianer,
folgende Aufgabe möchte ich automatisieren:
Ich muss immer mal wieder Vergleichsrechnungen in großen Tabellen anstellen, in denen sich meist nur 1 Wert ändert.
Bisher habe ich jedesmal den Wert geändert, Ergebnis notiert, neuer Wert, wieder notiert u.s.w.
Nun möchte eine Routine schreiben, mit der ich:
1. Festlegen kann in welcher Zelle der Wert geändert werden soll.
2. Mit welchem Startwert ich anfangen will.
3. Festlegen in welchem Intervall (z.B. 1 bis 10 in 2erschritten) der Wert geändert werden soll
4. Festlegen welche Ergebniszelle ausgelesen werden soll.
5. Festlegen in welcher Zelle beginnend das ausgelesene Ergebnis geschrieben werden soll und
5. Den Durchlauf starten und nach jedem Durchlauf das ausgelesene Ergebnis untereinander in eine Spalte loggen kann.
Ich habe bereits einen ganz ähnlichen Code zusammengefunden, der in etwa das macht, was ich auch brauche, jedoch nur weniger flexibilät. Ich muss zugeben, dass ich es aber nicht so hinbekomme, wie es am Ende aussehen soll.
Ich würde mich freuen, wenn jemand ein paar Ideen dazu hat. Der Basiscode steht unten:

Sub PPA_Sensitivity(s_type, S_IRR, i_first_row, S_output_variable, S_output_result)
Dim s_set_value As String
Dim S_sheet As String
Dim i_set_row As Integer
Dim S_equ As String
Dim A_results(1000, 2) As Variant
Dim i_numloop As Integer
Dim II As Integer
Dim b_is_array As Boolean
Dim S_Original_location As String
'clear the contents of the results sheet for the rows to be reported
Sheets("Sensitivity Results").Select
Range(S_output_variable + "3:" + S_output_result + "10000").Select
Selection.ClearContents
i_set_row = i_first_row
S_equ = S_IRR
S_sheet = "Sensitivity analysis"
'select sensitivity sheet
Sheets(S_sheet).Select
'Turn off all the autofiltering
Sheets(S_sheet).AutoFilterMode = False
'find the original location of the data
S_Original_location = Right(Worksheets(S_sheet).Range("B" + CStr(i_set_row)).Formula,
Len(Worksheets(S_sheet).Range("B" + CStr(i_set_row)).Formula) - 1)
'store the set value in an internal variable for later usage.
b_is_array = Worksheets("Project Data").Range(S_Original_location).HasArray
s_set_value = Worksheets("Project Data").Range(S_Original_location).Formula
'Calculate the number loops that need to be made
i_numloop = CInt((Worksheets(S_sheet).Range("B" + CStr(i_set_row + 2)).Value -
Worksheets(S_sheet).Range("B" + CStr(i_set_row + 1)).Value) / Worksheets(S_sheet).
Range("B" + CStr(i_set_row + 3)).Value)
'write the variable in question to the results sheet
If s_type = "IRR" Then
Worksheets("Sensitivity Results").Range(S_output_result + CStr(2)).Value = "IRR"
End If
For II = 0 To i_numloop
A_results(II, 0) = Worksheets(S_sheet).Range("B" + CStr(i_set_row + 1)).Value +  _
Worksheets(S_sheet).Range("B" + CStr(i_set_row + 3)).Value * II
'put the current value in the cell on the project description page
Worksheets("Project Data").Range(S_Original_location).Value = A_results(II, 0)
Calculate
A_results(II, 1) = Worksheets("Cash Flow").Range(S_equ).Value
'Write the data to the results sheet
Worksheets("Sensitivity Results").Range(S_output_variable + CStr(II + 3)).Value =   _
A_results(II, 0)
Worksheets("Sensitivity Results").Range(S_output_result + CStr(II + 3)).Value =   _
A_results(II, 1)
Next II
'Now put the original value back into the project data sheet
If b_is_array Then
Worksheets("Project Data").Range(S_Original_location).FormulaArray = s_set_value
Else
Worksheets("Project Data").Range(S_Original_location).Value = s_set_value
End If
End Sub

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tab mit Wertebereich rechnen + Ergebnisse loggen
04.09.2012 19:02:52
fcs
Hallo Christian,
im Prinzip keine große Affäre.
Allerdings braucht es noch ein wenig Strategie.
Mein Vorschlag wäre, dass du ein separates Tabellenblatt anlegst, in dem die erforderlichen Eingaben gemacht werden.
Die Eingabe könnte man auch in einem Userform machen. Das ist etwas Geschmackssache.
Ein Tabellenblatt ist geringfügig einfacher zu handhaben und programmieren - insbesondere für Anfänger.
Die Ergebnisliste könnte man im gleichen Blatt ausgeben oder jeweils auf einem eigenen Tabellenblatt. Da muss du festlegen, was für dich besser passt.
Eine weitere entscheidende Festlegung:
Willst du das Eingabeblatt jeweils als zusätzliches Blatt in den Dateien mit den Berechnungs-Tabellenblättern einfügen oder ist dir eine externe Datei lieber, in der die Datei/Tabellenblatt ausgewählt werden kann in der die Varianten berechnet werden soll. Die externe Variante hat natürlich den Vorteil, dass deine bestehenden Dateien ohne Makros und im Prinzip unverändert bleiben.
Ich muss immer mal wieder Vergleichsrechnungen in großen Tabellen anstellen, in denen sich meist nur 1 Wert ändert. Du schreibst "meist". Wenn es vorkommt, dass mehr als 1 Wert variert werden soll, dann sollte das direkt berüchsichtigt werden. Soll dann auch die 2. Zelle in einer Schleife schrittweise geändert werden? Wie groß ist den die max. Anzahl der zu varierenden Zellen?
Überleg dir mal wie du es gerne hättest.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige