- @Uwe - kann das Excel"automatisch rechnen"? - Toby0909, 23.03.2007, 18:24
- Re: @Toby - kann das Excel"automatisch rechnen"? - Uwe, 23.03.2007, 23:39
- ist unterwegs:) owT (o.Text) - Toby0909, 24.03.2007, 09:41
- Re: ist unterwegs:) owT (o.Text) - hoerby, 24.03.2007, 10:21
- das sieht aus wie ein Mini-MindJet MindManager oder so was?! - Toby0909, 24.03.2007, 10:38
- Re: ist unterwegs:) owT (o.Text) - hoerby, 24.03.2007, 10:21
- ist unterwegs:) owT (o.Text) - Toby0909, 24.03.2007, 09:41
- Re: @Uwe - kann das Excel"automatisch rechnen"? - Billiboy72, 28.03.2007, 00:43
- Re: @Toby - kann das Excel"automatisch rechnen"? - Uwe, 23.03.2007, 23:39
Re: @Toby - kann das Excel"automatisch rechnen"?
-->>Toby:[i]... also ich habe meine Tabelle so mehr oder weniger fertig.[/i]
Gratulation, zur erreichten Entwicklungsstand, Toby!
>Toby:[i]... Jetzt würde ich mir gerne die verschiedenen Ergebnisse in den 3 Zahlen für verschiedene Parameter-Einstellungen anzeigen lassen.
>also Parameter: 1-2, 1-3, 1-4, 1-5,....5-1,5-2,5-3,5-4.....bis zu 18-12, 15-18 usw....
>Diese Zahlen müssen aber eben in die Eingabefelder rein - dann muss der Excel rechnen und dann kommen hinten die Zahlen raus.
>Das muss doch irgendwie auch automatisch gehen?[/i]
Um diese Aufgabenstellung nach Deinen beschriebenen Vorstellungen lösen zu können, wirst Du um das Programmieren (VBA) nicht herumkommen, denn Du willst, dass eine bestimmte Anzahl von Parameterkombinationen nacheinander Ergebnisse liefert, die in einer Protokolltabelle nacheinander eingetragen werden.
Bei der Entwicklung einer Programmstruktur hierzu, muß man ein paar Rahmeninformationen beachten. Als Pseudo-Code kannst Du wohl folgende Ablaufbeschreibung eines VBA-Standardmoduls (Makro) als Grundlage nehmen:
<pre>Sub ParameterVariation()
- Schleife über alle Parameterpaare len1-len2
- Schreibe Paramter in Zellen, wodurch die Tabelenformeln
neu berechnet werden
- Schreibe in neu Zeile des Ergebnisprotokollstabelelnblatts
die Parameter l1 - l2 und die drei Ergebniswerte E1, E2 und E3
- nächstes Paarmeterpaar für erneuten Schleifendurchlauf setzen,
bis für alle Paare die Ergebnisse berecnet und geschrieben worden sind.
end sub
</pre>Soll nun dieser Ablaufplangedanke in ein VBA-Code umzusetzen werden, sind erst einmal Festlegungen zu den Parameterpaaren zu treffen (z.B Kombinationen aus l1=1 bis 18 und l2=1 bis 18 oder n-Paarameterpaare l1-l2), die in die Zellen G16 und H16 der Tabelle mit dem Tabellenname"Tabelle1" eingetragen werden sollen.
Ferner sind die Ergebniszellen zu benennen(z.B. 'Tabelle2'AA16, 'Tabelle2'AB16, und 'Tabelle2'AC16).
Die Ergebnisse sollen auf dem Tabellenblatt mit dem Namen Protokoll geschreiben werden:
<pre>Sub Parameterkombinationen()
Dim ws1 as worksheet, ws2 as Worksheet, ws3 as worksheet
dim l1 as integer, l2 as integer, lfdNr as long
set ws1 =worksheets("Tabelel1")
set ws2 =worksheets("Tabelel2")
set ws3 =worksheets("Protokoll")
'lösche Protokoll
with ws3
.cells.clear
'Schreibe Spaltenüberschrift
.cells(1,1)="lfdNr"
.cells(1,2)="Len1"
.cells(1,3)="Len2"
.cells(1,4)="Erg-Wert1"
.cells(1,5)="Erg-Wert2"
.cells(1,6)="Erg-Wert3"
end with
'Parameterpaar setzen
for l1 = 1 to 18
ws1.Range("G16")=l1
for l2 = 1 to 18
ws1.Range("H16")=l2
'infolge Zellenformel werden Ergebnisse
'der lfdNr-ten Parameterkombination ermittelt
lfdNr=lfdNr+1
'Schreibe Protokoll
with ws3
.cells(lfdNr+1,1)=lfdNr
.cells(lfdNr+1,2)=ws1.Cells(16, 7) 'Parameter l1
.cells(lfdNr+1,3)=ws1.Cells(16, 8) 'Parameter l2
.cells(lfdNr+1,4)=ws2.Cells(16, 27) 'Ergebnis in Zelle AA16
.cells(lfdNr+1,5)=ws2.Cells(16, 28) 'Ergebnis in Zelle AB16
.cells(lfdNr+1,6)=ws2.Cells(16, 29) 'Ergebnis in Zelle AC16
end with
next l2
next l1
set ws1=nothing
set ws2=nothing
set ws3=nothing
end ssub
</pre>Der"with... end with"-Block dient zur Vereinfachung bei gleichen Basisobjekten; es ist
<pre>with ws3
.cells(lfdNr+1,1)=lfdNr
.cells(lfdNr+1,2))=ws1.Cells(16, 7) 'Parameter l1
....
end with
</pre>gleichbedeutend mit
<pre>ws3.cells(lfdNr+1,1)=lfdNr
ws3.cells(lfdNr+1,2))=ws1.Cells(16, 7) 'Parameter l1
...
</pre>Wenn jedoch mit festen Parameterkombinatioen gearbeitet werden soll, dann sin die For-Schleifen enstsperechend abzuändern:
<pre>...
'Parameterpaar setzen
Dim arrl1, arrl2
arrl1=Array(1,4,7,10)
arrl2=Array(2,3,6, 8)
for l1 = 0 to UBound(arrl1)
with ws1
.Range("G16")=arrl1(l1)
.Range("H16")=arrl2(l1)
end with
'infolge Zellenformel werden Ergebnisse
'der lfdNr-ten Parameterkombination ermittelt
...
next l1
...
</pre>Da auf Anhieb das Makro vielleicht nicht zum Laufen gebracht werden kann und dieses EXCEL-Thema hier derart ausgeweitet werden soll, bis die letzten Feinheiten erläutert sind, kannst Du mir gerne eine Email senden, wenn es keine bessere Lösung hier gibt.
Gruß,
Uwe

gesamter Thread: