Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1696to1700
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

Daten aus Tabelle auslesen und in Tab. schreiben

Daten aus Tabelle auslesen und in Tab. schreiben
25.06.2019 18:51:56
reiner
Hallo Excel-Forum,
ich möchte in mehreren Tabellenblättern Berechnungen durchführen, für die die Input-Parameter aus einem "Datenspeicher" stammen. Auch die Ergebnisse sollen in den Datenspeicher geschrieben werden, um für weitere Berechnungen zur Verfügung zu stehen. Der Datenspeicher ist eine Tabelle: die Zeilen heißen Parameter, die Spalten Datensätze. Jeder Parameter und jeder Datensatz ist einmalig.
Innerhalb des Datenspeichers sollen keine Berechnungen stattfinden.
Den Import meiner Parameter in die Berechnungstabellenblätter realisiere ich mit INDEX + VERGLEICH.
Um Ergebnisse in den Datenspeicher zurück schreiben zu können, suche ich quasi die inverse Version von INDEX + VERGLEICH.
Die Aufgabe ist sinngemäß: Schreibe die Parameter a, q und x an die entsprechenden Stellen in Datensatz X, Y und Z im Tabellenblatt "Datenspeicher".
Ich habe ein Beispiel gebaut und hoffe es ist aussagekräftig: https://www.herber.de/bbs/user/130577.xlsx
Mir ist klar, dass mir das keiner fertigstellt. Ich brauche jemand, der/die mich in die richtige Richtung schickt.
Ich glaube man muss folgende Dinge tun:
1. Ein Array anlegen, das die IDs aller Zieldatensätze enthält, aber leere Spalten ignoriert
2. eine Matrix anlegen, die in der erstan Spalte die Parameternamen und in jeder weiteren Spalte die Zahlenwerte enthält
3. im Array jede ID durchgehen und die Zahlenwerte aus der Matrix an die zugehörige Stelle im Datenspeicher schreiben.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Tabelle auslesen und in Tab. schreiben
26.06.2019 12:55:46
reiner
OK, ich glaube das wird so nichts.
Ich habe das ganze mal ein wenig verändert und hoffe weiter auf Unterstützung. Ich habe nämlich leider zu wenig Ahnung von VBA und die Aufzeichnung bringt mich nirgendwo hin.
Es ist sicher cleverer die Datensätze in den Datenspeicher zu importieren.
Die Struktur der Tabellenblätter "Berechnung X" habe ich so geändert, dass die vollständigen Parameterlisten aller zu übertragenden Datensätze ab Zeile 33 aufgeführt sind.
Ich habe mir das so gedacht:
1. in Tabellenblatt Datenspeicher werden alle zu importierenden Datensatz-IDs händisch angelegt
2. Das Makro geht jede Zelle in Zeile 7 durch und sucht den Inhalt jeder Zelle in allen Tabellenblättern der Datei ab Zeile 33.
3. wird eine Datensatz-ID gefunden, werden alle 16 folgende Zellen kopiert und die Werte in die entsprechenden 16 Zellen in Tabllenblatt Datensätze geschrieben.
4. wird ein Inhalt nicht gefunden, springt das Makro in die nächste Zelle in Zeile 7.
neue Datei hier: https://www.herber.de/bbs/user/130595.xlsx
Bitte um Hilfe, ich habe keine Ahnung wie ich da rangehen soll. Ich würde es ja ohne Makros lösen, aber da mehrere Berechnungen in dieselben Zellen schreiben müssen, geht das nur so.
hoffnungsvolle Grüße
Anzeige
AW: Daten aus Tabelle auslesen und in Tab. schreiben
26.06.2019 21:29:34
Matthias
Moin!
ICh würde an deiner Stelle alles im VBA berechnen lassen. Wenn du aber bei deinem Aufbau bleiben willst, dann probiere es mal mit dem Code hier:
Option Explicit
Sub eintragen()
Dim blatt
Dim datensatz
Dim zeilen As Long, zeile As Long, spalten As Long, spalte As Long
Dim suchergeb
Dim datenlange As Long
Dim erster
datenlange = 16
zeilen = Worksheets("Datenspeicher").Cells(Rows.Count, 2).End(xlUp).Row
spalten = Worksheets("Datenspeicher").Cells(7, Columns.Count).End(xlToLeft).Column
For spalte = 2 To spalten
datensatz = Worksheets("Datenspeicher").Cells(7, spalte)
For Each blatt In Worksheets
'nur Blätter mit Berechnung im Namen
If InStr(1, blatt.Name, "Berechnung", vbTextCompare) > 0 Then
Set suchergeb = blatt.Cells.Find(datensatz, , , xlWhole)
If Not suchergeb Is Nothing Then
erster = suchergeb.Address
Do
If suchergeb.Row > 33 Then
suchergeb.Resize(datenlange, 1).Copy
Worksheets("Datenspeicher").Cells(7, spalte).Resize(datenlange, 1). _
PasteSpecial xlPasteValues
End If
Set suchergeb = blatt.Cells.FindNext(suchergeb)
Loop While suchergeb.Address  erster
End If
End If
Next
Next
Worksheets("Datenspeicher").Cells(7, 1).Select
MsgBox "Fertig"
End Sub

VG
Anzeige
AW: Daten aus Tabelle auslesen und in Tab. schreiben
27.06.2019 00:18:47
reiner
Matthias! Danke!
Es funktioniert auch in der eigentlichen Datei. Großartig!
Du hast mich neugierig gemacht mit dem "alles im VBA berechnen lassen". Ich erhoffe mir eine Transparenz der Berechnungen durch das wegschreiben der Zweischenergebnisse. Meinst du das ist Quatsch?
Worauf ich gern verzichten würde ist das Zwischenspeichern der Ergebnisse am Ende der Tabelle. Aber irgendwas ist ja immer.
In Dankbarkeit - gute Nacht...
AW: Daten aus Tabelle auslesen und in Tab. schreiben
27.06.2019 12:26:51
Matthias
Moin!
Ob irgendwas Quatsch ist, kann ich nicht einschätzen. Es kommt ja immer drauf an, was man braucht. Evtl. sind manche Berechnungen umständlich. ICh weiß jetzt aber auch nicht, wie deine Daten aufeinander aufbauen. Im Blatt 2 waren ja glaube ich Daten, die im Blatt 1 berechnet wurden. Wenn sich dass dann so forsetzt, wird es evtl. schwierig. Ansonsten würde ich meist vorschlagen, die Daten einzulesen, im Code zu verarbeiten / berechnen und dann zurück zu schreiben. Dadurch würdest du dir das aufschreiben der einzelnen Berechnungen in den Blätter sparen. Und wenn man das fortlaufend berechnet, hat man die Daten von deinem Blatt1 zuerst und kann dann für die BErechnung aus Blatt 2 darauf zurcükgreifen. Nachteil ist allerdings, dass man dann nichts mehr sieht - außer das Endergebnis.
VG
Anzeige
AW: Daten aus Tabelle auslesen und in Tab. schreiben
28.06.2019 15:23:04
reiner
Alles klar. Die Berchnungen in den Tabellenblättern greifen teils auf Ergebnisse anderer Berechnungen zurück und beinhlten Faktoren, die in Bereichen frei gewählt werden müssen, es wäre sicher schwierig soeine Optimierung in ein Makro zu packen.
Danke nochmals für deine Unterstützung. Allein mit Tutorials wäre ich da nicht hingekommen.
Fall möglich: Kannst du mit erklären was hier passiert?
Set suchergeb = blatt.Cells.Find(datensatz, , , xlWhole)
Wenn nicht auch nicht schlimm.
Beste Grüße!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige