Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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

Anzeige

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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro für Werte in Tabelle eintragen


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu erstellen, das Werte in eine Tabelle einträgt, folge diesen Schritten:

  1. Öffne Excel und navigiere zu dem Arbeitsblatt, in dem du die Daten eintragen möchtest.
  2. Öffne den Visual Basic for Applications (VBA) Editor:
    • Drücke ALT + F11.
  3. Füge ein neues Modul hinzu:
    • Klicke auf Einfügen > Modul.
  4. Kopiere den folgenden Code in das Modul:
Option Explicit

Sub WerteInTabelleEintragen()
    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
  1. Anpassungen vornehmen:
    • Stelle sicher, dass die Zellen für die Start- und Endwerte sowie die Schrittfolge korrekt eingestellt sind.
  2. Führe das Makro aus:
    • Drücke F5 oder gehe zu Run > Run Sub/UserForm.

Jetzt solltest du in der Lage sein, Daten in die Tabelle einzutragen, indem du die entsprechenden Werte angibst.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich"

    • Lösung: Überprüfe, ob die Zellen, die du für dblBgn, dblEnd und dblStp verwendest, tatsächlich numerische Werte enthalten.
  • Fehler: "Der Bereich ist nicht definiert"

    • Lösung: Stelle sicher, dass die Tabelle existiert und der Name im Code korrekt ist.
  • Die Tabelle bleibt leer:

    • Lösung: Sicherstellen, dass das Makro ordnungsgemäß ausgeführt wird und die Zellen in der Tabelle korrekt referenziert sind.

Alternative Methoden

Falls das Erstellen eines Makros zu komplex ist, kannst du auch die folgenden Methoden in Betracht ziehen:

  • Formeln nutzen: Verwende Excel-Formeln, um Werte zu berechnen und die Ergebnisse in die Tabelle einzutragen.
  • Pivot-Tabellen: Falls du große Datenmengen zusammenfassen und analysieren möchtest, könnten Pivot-Tabellen hilfreich sein.
  • Excel-Add-Ins: Nutze Add-Ins, die speziell für das Eintragen von Daten in Tabellen entwickelt wurden.

Praktische Beispiele

Hier sind einige Beispiele, wie du das Makro anpassen kannst:

  1. Einfaches Beispiel:

    • Beginne mit Werten von 0 bis 10 in Schritten von 1:
      dblBgn = 0
      dblEnd = 10
      dblStp = 1
  2. Komplexere Tabellen:

    • Du kannst mehrere Kriterien hinzufügen und die Berechnungen anpassen, um spezifische Ergebnisse in die Tabelle einzutragen.

Tipps für Profis

  • Verwende Option Explicit: Dies hilft, Fehler bei der Variablen-Deklaration zu vermeiden.
  • Schalte die Bildschirmaktualisierung aus: Dies beschleunigt den Prozess, wenn du große Datenmengen verarbeitest.
  • Teste mit kleinen Datensätzen: Beginne mit weniger Daten, um die Performance zu überprüfen, bevor du auf größere Tabellen umschaltest.

FAQ: Häufige Fragen

1. Was ist ein Makro in Excel?
Ein Makro ist eine Reihe von Befehlen, die in Excel automatisiert werden, um repetitive Aufgaben zu vereinfachen.

2. Wie kann ich ein Makro speichern?
Speichere deine Excel-Datei im Format .xlsm, um die Makros zu behalten.

3. Kann ich das Makro anpassen?
Ja, du kannst den Code jederzeit anpassen, um andere Werte oder Berechnungen in die Tabelle einzutragen.

4. Welche Excel-Versionen unterstützen Makros?
Makros sind in den meisten Excel-Versionen verfügbar, einschließlich Excel 2010, 2013, 2016, 2019 und Office 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige