Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1464to1468
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 zum Datenabgleich und kopieren

Makro zum Datenabgleich und kopieren
05.01.2016 10:59:03
anna
Hallo zusammen,
ich habe mal wieder eine Frage.
Im Moment bin ich dabei eine Planungsdatei zu erstellen. Diese besteht aus einem Übersichtsblatt und mehreren immer gleich aufgebauten Tabellenblättern, in der gleichen Mappe. Meine Tabellenblätter sind fortlaufend beschriftet.
Was soll das Makro machen: Zum einen soll es einige Zeilen aus jedem Blatt kopieren, zum anderen soll es, zwei Daten miteinander vergleichen. Stimmen diese überein soll ein nebenstehender Wert in eine bestimmt Zeile kopiert werden. Daraufhin soll das nächste Datum überprüft werden usw. bis alle Daten im Übersichtsblatt überprüft wurden und optimaler Weise einen Wert zugeordnet bekommen haben. Dann wird das nächste Tabellenblatt durchgearbeitet und genauso vorgegangen.
Sub PlanungAktualisieren()
Dim t As Long 'steht für jede nächste Zeile im Übersichtsblatt
Dim I As Long 'steht für die verschiedenen Tabellenblätter
Dim z As Long 'steht für die verschiedenen Daten die abgeglichen werden sollen in den  _
Tabellenblättern
Dim q As Long 'steht für die verschiedenen Daten die abgeglichen werden sollen im Ü _
bersichtsblatt
lngSheets = ThisWorkbook.Sheets.Count
For I = 2 To Worksheets.Count
For t = 1 To 500
For q = 3 To 20
'''''''''''''Kopieren der Zellen''''''''''''''''''''''''''''''''''''''''''''''
ThisWorkbook.Sheets("Übersicht").Cells(t + 10, 1) = ThisWorkbook.Sheets(I).Name
ThisWorkbook.Sheets("Übersicht").Cells(t + 10, 2) = ThisWorkbook.Sheets(I).Cells(6, 4)  ' _
Name
ThisWorkbook.Sheets("Übersicht").Cells(t + 10, 3) = ThisWorkbook.Sheets(I).Cells(14, 3) ' _
Stunden
''''''''''''''''Überprüfen von Datum + Einfügen'''''''''''''''''''''''''''''''
Do
If ThisWorkbook.Sheets("Übersicht").Cells(8, q + 1) = ThisWorkbook.Sheets(I).Cells( _
z + 1, 2).Value Then
ThisWorkbook.Sheets(I).Cells(z + 1, 4).Copy Destination:=Cells(t + 10, q + 1)
Else: z = z + 1
End If
Loop While 0
Next q
Next t
Next I
End Sub
Das Kopieren funktioniert soweit, Probleme hab ich beim Abgleich der Daten. Auch bezweifle ich, dass meine Variablen so ihre Funktion erfüllen wie ich sie dargestellt habe (nur next).
Kann mir jemand hierbei helfen?
Vielen Dank im Voraus.
Viele Grüße
Anna

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zum Datenabgleich und kopieren
05.01.2016 16:51:10
Michael
Hi Anna,
Dein Code sieht leider (wie Du es schon vermutet hast) einigermaßen "unlogisch" aus:
a) for t = 1 to 500
warum 500? Sollte man nicht einfach überprüfen, wieviele Zeilen vorhanden sind?
b) Du kopierst 500 mal (20-3, also 17 mal mit q) 17 = 8500 Mal die immer gleichen Werte.
Die 17 Mal kann man sich auf alle Fälle schenken, d.h. das "Kopieren der Zellen" gehört sich VOR die innerste Schleife mit q.
Aber: wozu 500 mal kopieren?
Das geht auch in einem Rutsch:

ThisWorkbook.Sheets("Übersicht").range(Cells(11, 1),Cells(501, 1)).value  = ThisWorkbook.Sheets( _
I).Name
' usw. für alle 3 Kopierzeilen
c) Allerdings führt die äußere Schleife (I = 2 to count) dazu, daß dieser Bereich immer wieder überschrieben wird, so daß zuletzt nur die übernommenen Zeilen aus dem letzten Tabellenblatt drinstehen. Ist das so erwünscht?
d) ThisWorkbook kann man sich schenken.
e) Do..Loop While 0 ist zu nichts gut.
Also: die ganze Geschichte bietet viel Raum für Optimierungen, die ich (oder ein anderer Helfer) gerne vornehmen, aber bitte: mit anonymisierter Beispieldatei.
Schöne Grüße,
Michael

Anzeige
AW: Makro zum Datenabgleich und kopieren
05.01.2016 17:55:35
anna
Hallo Michael,
danke für deine Antwort.
Gerne schicke ich eine Beispieldatei. Diese findest du hier:
https://www.herber.de/bbs/user/102595.xlsm
Eine Beschreibung habe ich auch mit rein genommen.
Die 500 habe ich lediglich als Begrenzung genommen, damit nicht unnötig viel von dem Tabellenblatt durchsucht wird. Wenn das falsch ist, dann bin ich dafür sehr offen was neues zu lernen.
Vielen Dank für deine Hilfe schon mal.
Einen schönen Abend.
Anna

Probiere mal
06.01.2016 04:47:25
Michael
Hi Anna,
Datei anbei: https://www.herber.de/bbs/user/102601.xlsm
Kommentarlos, weil spät.
Schöne Grüße,
Michael

Anzeige
AW: Probiere mal
08.01.2016 16:03:44
anna
Hi Michael,
Spät ist gut :)
Wahnsinns Lösung. Vielen Dank funktioniert toll.
Eine kleine Frage hab ich noch. Wenn ich mir das Datum mittels einer Formel errechnen lasse (D8:R8) in der Übersichtstabelle (damit diese fortlaufend bleibt), dann finde das Makro leider keine entsprechenden Werte in den anderen Tabellen. Wahrscheinlich weil nicht nach dem Wert der Ausgeben wird gesucht wird.
https://www.herber.de/bbs/user/102673.xlsm
Wie kann man das machen?
Vielen Dank dir.
Grüße
Anna

geändert
08.01.2016 17:00:21
Michael
Hi Anna,
der eine, offensichtliche Grund, weshalb es nicht funktioniert, ist, daß .find wahlweise nach Formeln *oder* Inhalten sucht. Lies Dir in Excel mal die Hilfe zu .Find bzw. range.find durch.
Ich habe zunächst das .find erweitert um lookin:=xlvalues, aber es geht trotzdem nicht.
Um nicht ewig nach "offiziellen" Lösungsmöglichkeiten zu suchen, kopiere ich die Zeile 8 einfach als Werte in die Zeile 9, formatiere sie als Datum und durchsuche diese Zeile (die nach Ablauf des Makros denn auch wieder gelöscht wird). Das ist nicht "schön", funktioniert aber, so what.
Die Datei: https://www.herber.de/bbs/user/102677.xlsm
Schöne Grüße,
Michael

Anzeige
AW: Probiere mal
12.01.2016 09:25:42
anna
Hi Michael,
Spät ist gut :)
Wahnsinns Lösung. Vielen Dank funktioniert toll.
Eine kleine Frage hab ich noch. Wenn ich mir das Datum mittels einer Formel errechnen lasse (D8:R8) in der Übersichtstabelle (damit diese fortlaufend bleibt), dann finde das Makro leider keine entsprechenden Werte in den anderen Tabellen. Wahrscheinlich weil nicht nach dem Wert der Ausgeben wird gesucht wird.
https://www.herber.de/bbs/user/102673.xlsm
Wie kann man das machen?
Vielen Dank dir.
Grüße
Anna

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige