Anzeige
Archiv - Navigation
1116to1120
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

Werte aus Matrix in andere Datei und Ergebn zurück

Werte aus Matrix in andere Datei und Ergebn zurück
Stef@n
Hallo Herber-Freunde,
ich stehe vor folgender Fragestellung:
Ich habe eine Datei, in der relativ komplexe Berechnungen durchgeführt werden.
Dabei werden in dieser "Quell-Datei" in 2 Zellen (M1 und M5) zahlenwerte erfasst,
und (nach ca 1-2 sekunden) in Zelle M10 ein Wert angezeigt.
Jetzt möchte ich diesen Berechnungsprozess "automatisieren" in dem ich aus einer
weiteren Datei (Matrix-Datei) die Werte für die Zelle M1 und M5 auslese, in die Quelldatei
jeweils eintrage, dann das errechnete Ergebnis in die Matrix-Datei entsprechend eintragen lasse.
Die Matrix-Datei ist wie folgt aufgebaut
Spalte A (A2 bis A1000) Datumswerte - die sollen die die Zelle M1 eingetragen werden
in Zeile 1 (B2 bis AY1) Zahlenwerte von 1 bis 50
Das Makro soll nun z.B. den Wert aus A2 in M1 und B1 in M5 eintragen
und dann das Ergebnis aus Zelle M10 in Zelle B2 eintragen usw
Es sollen halt alle Kombinationen aus dieser Matrix errechnet werden.
Gibts dafür eine Makro-Lösung ?
Freu mich sehr auf eine Antwort :)
Besten Gruß
Stef@n
AW: Werte aus Matrix in andere Datei und Ergebn zurück
18.11.2009 15:58:10
fcs
Hallo Stef@an,
ein entsprechendes Makro sieht dann etwa wie folgt aus, wobei beide Dateien geöffnet sein müssen, bevor das Makro gestartet wird. Die Namen von Dateien und tabellen im Code muss du natürlich anpassen.
Gruß
Franz
Sub MatrixAusfuellen()
Dim wksMatrix As Worksheet, wksQuelle As Worksheet
Dim Zeile As Long, Spalte As Long, StatusCalc As Long
On Error GoTo Fehler
Set wksMatrix = Workbooks("Matrix.xls").Worksheets("Matrix")
Set wksQuelle = Workbooks("Berechnung.xls").Worksheets("Calculation")
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
With wksMatrix
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
For Spalte = 2 To 51 '(B bis AY)
Application.StatusBar = "Zeile " & Zeile & " / Spalte " & Spalte & " wird bearbeitet."
wksQuelle.Range("M1").Value = .Cells(Zeile, 1).Value
wksQuelle.Range("M5").Value = .Cells(1, Spalte).Value
wksQuelle.Range("M10").Calculate
.Cells(Zeile, Spalte).Value = wksQuelle.Range("M10").Value
Next
Next
End With
Fehler:
With Application
.StatusBar = False
StatusCalc = .Calculation
.Calculation = StatusCalc
.EnableEvents = True
.ScreenUpdating = True
End With
With Err
Select Case .Number
Case 0 'kein fehler
Case Else
MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
End Select
End With
MsgBox "Fertig!"
End Sub

Anzeige
AW: Werte aus Matrix in andere Datei und Ergebn zurück
18.11.2009 19:06:54
Stef@n
Hallo Franz
vielen Dank für die schnelle Antwort.
Das Makro läuft (und füllt sämtliche Werte in der Datei Matrix.xls) - jedoch zu schnell :O
Es werden in alle Zellen EIN Wert eingetragen :|
Nachdem die Werte in M1 und M5 in der Datei "Berechnung.xls" eingetragen wurde
sollte das Makro warten, bis der Wert in Zelle M10 ausgerechnet wurde.
Dieses dauert ca 1-2 Sekunden.
Kann man in dem Code eine kleine "Pause" einbauen, die solange wartet
bis die Zelle M10 berechnet wurde ?
Besten Gruß
Stef@n
AW: Werte aus Matrix in andere Datei und Ergebn zurück
18.11.2009 21:17:08
Stef@n
Hallo Franz
irgendwie funktioniert es bei mir leider nicht so wie gewollt
... es werden in der Matrix-Datei in den zu befüllenden zellen ab B2 immer der gleiche Wert eingetragen
Zur Verdeutlichung habe ich mal beide Dateien hochgeladen - die Nomenklatur entsprechend angepasst -
Würd mich sehr freuen, wenn Du dich des Themas nochmal annehmen kannst
Besten Gruß
Stef@n
hier die beiden Dateien als zip
https://www.herber.de/bbs/user/66038.zip
Anzeige
AW: Werte aus Matrix in andere Datei und Ergebn zurück
19.11.2009 08:19:12
fcs
Hallo Stefan,
die Berechnungen in deinem Blatt sind so komplex, dass es nicht ausreicht, nur die Zelle neu zu berechnen. Es muss nach jeder Werteingabe das komplette Blatt neu berechnet werden, was dann auch entsprechend lange dauert.
Du muss nur eine Zeile anpassen.
'        wksQuelle.Range("M10").Calculate                     '### alt
wksQuelle.Calculate                                   '### neu
Dir ist aber schon klar, dass
2500 Zeilen x 50 Spalten ~f~-->~f ~125000 Berechnungen ergibt und somit die Makrolaufzeit bei ca. 1 s pro Berechnung etwa 125000 2 /3600 s/h = 34,7 h betragen würde.
ggf. solltest du den berechenten Wert noch auf 3 Stellen Runden.
Es werden bedingt durch die Rechengenauigkeit von Excel sonst auch Werte wie
1,4499999999999 statt 1,450
1,23E-12 statt 0
0,3250000000001 statt 0,325
eingetragen.
       .Cells(Zeile, Spalte).Value = _
Application.WorksheetFunction.Round(wksQuelle.Range("M10").Value, 3) 'neu
'        .Cells(Zeile, Spalte).Value = wksQuelle.Range("M10").Value '### alt

Gruß
Franz
Anzeige
AW: Werte aus Matrix in andere Datei und Ergebn zurück
19.11.2009 19:16:09
Stef@n
Hey Franz
ganz grosse Klasse ! Funktioniert perfekt !
Und auch Danke w des Hinweises "besser abrunden" ... man lernt immer dazu !
Zu den Anzahl der Werte:
Ich werde die Zeilen / Spalten eh noch reduzieren , so dass "nur" ca 10.000 Berechnungen (vermutlich sogar noch weniger) durchgeführt werden müssen.
So kann ich abends vor dem "ins Bett gehen" das Makro in aller Ruhe laufen lassen ;)
Dank Dir sehr für Deine große Hilfe !
Allerbesten Gruß
Stef@n

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige