Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
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

Makro für Werte in Tabelle eintragen

Makro für Werte in Tabelle eintragen
27.11.2014 18:22:55
Joerschi
Hallo liebes Forum,
ich benötige einen Makro-Ansatz für folgendes Problem (zuerst Skizze):
Userbild
1. Es soll eine Tabelle automatisch mit Werten befüllt werden (grün) sowie auch deren Überschriften generiert (blau).
2. Die Überschriften sind "Kriterien", die anhand einer vorgegebenen Schrittfolge wechseln und wie folgt entstehen:
Man gibt a) einen Anfangswert, b) einen Endwert sowie c) eine Schrittfolge vor, welcher die Werte von Kriterium A und B definiert.
Beispielvorgaben: a) von = 0, b) bis = 5, c) Schrittfolge = 0,5
Daraus ergeben sich jeweils für Kriterium A und B (in diesem Beispielfalle) 11 Kombinationen [0,0-0,5 ; 0,0-1,0 ; 0,0-1,5 ; ... 0,0-5,0).
3. Alle Kombinationen der Kriterien A und B sollen jetzt automatisch nacheinander in allen denkbaren Kombinationen (121 im Beispiel, da 11*11) in die Zelle F3 und F4 eingetragen werden.
Je nach Kombination ergibt sich in der Zelle H3 ein Ergebnis, welches dann unten in der Wertetabelle (grün) an der richtigen Stelle erscheinen soll.
Da die Vorgaben der Schrittfolgen sich welchseln, sollte die Überschrift entsprechend mit generiert werden (kann man aber auch manuell machen, denke ich).
Hat jemand einen Tip, wie man das angehen könnte?
Musterdatei: https://www.herber.de/bbs/user/94080.xlsx
Danke im Voraus und LG
Joerschi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für Werte in Tabelle eintragen
27.11.2014 20:12:40
Christian
Hallo Joerschi,
mein Tipp wäre: Verzichte auf den Umweg der Ergbenisse in F3 und F4 und schreibe direkt in die Zieltabelle ein, wobei mir der Sinn der Tabelle nicht ganz klar ist...
Bsp:

Option Explicit
Sub TestIt()
Dim dblBgn As Double
Dim dblEnd As Double
Dim dblStp As Double
Dim lngCnt As Long, i As Long
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Tabelle1")
.Rows(7).Resize(10000).Clear
dblStp = .Cells(3, 2)
dblBgn = .Cells(4, 2)
dblEnd = .Cells(5, 2)
lngCnt = (dblEnd - dblBgn) / dblStp + 1
For i = 1 To lngCnt
.Cells(i + 8, 1) = dblBgn + (i - 1) * dblStp
.Cells(8, i + 1) = dblBgn + (i - 1) * dblStp
Next
If lngCnt > 0 Then
.Cells(9, 2).Resize(lngCnt, lngCnt).FormulaR1C1 = "=RC1*R8C"
End If
End With
Application.ScreenUpdating = True
End Sub

Gruß
Christian

Anzeige
AW: Makro für Werte in Tabelle eintragen
27.11.2014 21:08:14
Joerschi
Hi Christian,
vielen Dank für Deine Hilfe.
Der Umweg mit dem zwischenzeitlichen Eintragen in F3 und F4 ist zwingend notwendig, da in H3 normalerweise ziemlich komplexe Formeln ausgerechnet werden (abhängig von den Werten in F3 und F4 und die wiederum anhand ellenlanger Tabellen aus anderen Karteien), deren Ergebniswert in H3 dann in die Tabelle geschrieben werden soll.
Die Multiplikation in H3 ist nur als simples Beispiel gedacht - wie auch das ganze Beispiel extrem vereinfacht wurde.
Könntest Du das noch ergänzen?
Ich versuch mich dann mal reinzuarbeiten - sieht nicht einfach aus :-) .
LG und Danke nochmal für die Hilfe!, Joerschi

Anzeige
AW: Makro für Werte in Tabelle eintragen
27.11.2014 23:10:26
Christian
hallo Joerschi,
ist nicht kompliziert - in der For-Schleife werden die Überschriften für Zeile 8 und Spalte A erzeugt und anschließend wird mit ...FormulaR1C1 = "=RC1*R8C" im relevanten Bereich die Formel eingetragen, e basta.
So wie du das jetzt aber beschreibst:
... da in H3 normalerweise ziemlich komplexe Formeln ausgerechnet werden (abhängig von den Werten in F3 und F4 und die wiederum anhand ellenlanger Tabellen aus anderen Karteien), deren Ergebniswert in H3 dann in die Tabelle geschrieben werden ...
würde ich eher vorschlagen, das Thema komplett per VBA zu erschlagen, denn das ständige Neu-Berechnen braucht eben seine Zeit, wie man bei folgendem Code auf Basis deiner Bsp-Datei schon erkennen kann.
Ggf. lässt sich das auch noch etwas beschleunigen, aber ich fürchte, dass die Neu-Berechnung die größte Bremse ist und genau die brauchst du ja in diesem Konstrukt.
Teste erstmal mit kleinen Bereichen und großen Schrittweiten ...
Option Explicit
Sub TestIt()
Dim dblBgn As Double
Dim dblEnd As Double
Dim dblStp As Double
Dim lngCnt As Long
Dim i As Long, j As Long
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Tabelle1")
.Rows(7).Resize(10000).Clear
dblStp = .Cells(3, 2)
dblBgn = .Cells(4, 2)
dblEnd = .Cells(5, 2)
lngCnt = (dblEnd - dblBgn) / dblStp
For i = 0 To lngCnt
.Cells(8, i + 2) = dblBgn + i * dblStp
.Cells(i + 9, 1) = dblBgn + i * dblStp
Next
For j = 0 To lngCnt
.Cells(3, 6) = dblBgn + j * dblStp
For i = 0 To lngCnt
.Cells(4, 6) = dblBgn + i * dblStp
.Cells(i + 9, j + 2) = .Cells(3, 8)
Next
Next
End With
Application.ScreenUpdating = True
End Sub
Kommst du damit klar?
Gruß
Christian

Anzeige
AW: Makro für Werte in Tabelle eintragen
28.11.2014 08:34:21
Joerschi
Hey Christian,
Danke Dir.
Du hast Recht - große Spannen und kleine Schritte wirken sich sehr auf die Leistung aus. Ist aber so :-(.
Ich würde Deine Formel am WE mal auf die tatsächliche Datenbankdatei adaptieren und bisschen testen und dann auf jeden Fall nochmal Feedback geben, ob wie was funktioniert.
Vielen Dank für Deine Mühen und Hilfe bislang.
Wünsch Dir ein schönes WE!
Joerschi

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige