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

Stundenplan per Makro schreiben | Herbers Excel-Forum

Stundenplan per Makro schreiben
20.10.2009 21:37:55
Mat

Hallo liebe Excelianer,
ich benötige wieder einmal Eurere Hilfe.
Über einen CSV Export erhalte ich Daten in Form eines Wochenplans. In der ersten Spalte stehen die Namen, in den Spalten B - H die jeweiligen Fächer. Jede Spaltenüberschrift steht für einem Tag.
Mein Wunsch wäre es, den Wochenplan per Makro auf sieben verschiedene Tabellenblätter in die dortige Gruppe mit dem entsprechende Datum zu kopieren.
Mein Beispiel: https://www.herber.de/bbs/user/65229.xls
Ich freue mich auf Eure Vorschläge.
Viele Grüße
Mat

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Werte auf Blätter verteilen
21.10.2009 00:41:14
Erich G.
Hi Matthias,
probier mal

Option Explicit
Sub Verteil()
Dim strZ, ii As Long, tt As Long
strZ = Split("B3 F3 B20 F20")       ' Beginne der Zielbereiche
For ii = 0 To 3                     ' Schleife über 4 Gruppen
For tt = 1 To 7                  ' Schleife über 7 Tage=Zielblätter
With Sheets("Tag" & tt)
.Range(strZ(ii)).Resize(4) = _
Sheets("Ausgang").Cells(ii * 4 + 2, 1).Resize(4).Value
.Range(strZ(ii)).Offset(, 1).Resize(4) = _
Sheets("Ausgang").Cells(ii * 4 + 2, tt + 2).Resize(4).Value
End With
Next tt
Next ii
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Werte auf Blätter verteilen - Version 2
21.10.2009 00:54:32
Erich G.
Hi Matthias,
so gehts etwas besser:

Option Explicit
Sub Verteil2()
Dim strZ, ii As Long, tt As Long, arrNam
strZ = Split("B3 F3 B20 F20")       ' Beginne der Zielbereiche
For ii = 0 To 3                     ' Schleife über 4 Gruppen
' Array mit den Namen einer Gruppe
arrNam = Sheets("Ausgang").Cells(ii * 4 + 2, 1).Resize(4).Value
For tt = 1 To 7                  ' Schleife über 7 Tage=Zielblätter
With Sheets("Tag" & tt)
.Range(strZ(ii)).Resize(4) = arrNam
.Range(strZ(ii)).Offset(, 1).Resize(4) = _
Sheets("Ausgang").Cells(ii * 4 + 2, tt + 2).Resize(4).Value
End With
Next tt
Next ii
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Werte auf Blätter verteilen - Version 2
21.10.2009 12:18:49
Mat
Hallo Erich,
erst mal danke für Dein Makro, funktioniert einwandfrei und war schon gleich ein Super Anfang.
Vielleicht geht auch noch etwas mehr.
Das Datum in der Kopfzeile auf dem Blatt Anfang sollte ebenfalls auf die Folgeblätter übernommen werden. Klasse wäre es auch, wenn die Arbeitsblätter 1-7 (Name momentan Tag1 - Tag7) in das jeweilige Datum unbenannt würden.
Viele Grüße
Mat
AW: Werte auf Blätter verteilen - Version 2
21.10.2009 13:16:57
Erich G.
Hi Matthias,
der erste Wunsch ist leicht erfüllt:

Option Explicit
Sub Verteil3()
Dim strZ, ii As Long, tt As Long, arrNam
strZ = Split("B3 F3 B20 F20")       ' Beginne der Zielbereiche
For ii = 0 To 3                     ' Schleife über 4 Gruppen
' Array mit den Namen einer Gruppe
arrNam = Sheets("Ausgang").Cells(ii * 4 + 2, 1).Resize(4).Value
For tt = 1 To 7                  ' Schleife über 7 Tage=Zielblätter
If ii = 0 Then Sheets("Tag" & tt).Cells(1, 1) = _
Sheets("Ausgang").Cells(1, tt + 2).Value
With Sheets("Tag" & tt).Range(strZ(ii)).Resize(4)
.Value = arrNam
.Offset(, 1) = Sheets("Ausgang").Cells(ii * 4 + 2, tt + 2).Resize(4).Value
End With
Next tt
Next ii
End Sub
Beim zweiten Wunsch ist die Frage: Wie soll denn das Datum als Blattname aussehen?
In Excel ist das Datum zunächst eine Zahl (heute 40107). Zwei Formate würde ich vorschlagen:
JJJJ-MM-TT oder JJJJMMTT.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Werte auf Blätter verteilen - Version 2
21.10.2009 15:23:37
Mat
Hallo Erich,
Dank für Deine schnelle Antwort.
Wie wärs mit TT-MM-JJ? Ansonsten ist JJJJ-MM-TT natürlich auch ok.
Gruß Mat
AW: Werte auf Blätter verteilen - Version 2
21.10.2009 16:57:44
Mat
Hallo Erich,
Dank für Deine schnelle Antwort.
Wie wärs mit TT-MM-JJ? Ansonsten ist JJJJ-MM-TT natürlich auch ok.
Gruß Mat
Version 3 - mit Datum als Blattname
21.10.2009 18:51:03
Erich G.
Hi Matthias,
hier die Routine mit Datumsen als Blattnamen. Ich hab mal JJJJ-MM-TT angenommen.
Du müsstest jetzt de Blätter einmalig per Hand umbenennen, danach läuft es:

Sub Verteil3()
Dim strZ, ii As Long, tt As Long, datD As Date
strZ = Split("B3 F3 B20 F20")             ' Beginne der Zielbereiche
For tt = 1 To 7                           ' Schleife über 7 Tage=Zielblätter
datD = Sheets("Ausgang").Cells(1, tt + 2)
With Sheets(Format(datD, "yyyy-mm-dd"))
.Cells(1, 1) = datD
For ii = 0 To 3                     ' Schleife über 4 Gruppen
With .Range(strZ(ii)).Resize(4)
.Value = Sheets("Ausgang").Cells(ii * 4 + 2, 1).Resize(4).Value
.Offset(, 1) = Sheets("Ausgang").Cells(ii * 4 + 2, tt + 2).Resize(4).Value
End With
Next ii
End With
Next tt
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Version 3 - mit Datum als Blattname
21.10.2009 20:37:31
Mat
Hallo Erich,
bei der letzten Version bekomme ich einen Laufzeitfehler 9 - Außerhalb des gültigen Bereichs!
Gruß Mat
AW: Version 3 -gelesen ???
22.10.2009 08:30:08
Bernd
Hallo,
hast du das gemacht was Erich geschrieben hat ?
Du müsstest jetzt de Blätter einmalig per Hand umbenennen, danach läuft es:
Gruß
Bernd
AW: Werte auf Blätter verteilen - Version 2
23.10.2009 22:47:53
Mat
Hallo Erich,
Das Makro funktioniert jetzt:
Sub Verteil3()
Dim strZ, ii As Long, tt As Long, datD As Date
strZ = Split("B3 F3 B20 F20")             ' Beginne der Zielbereiche
For tt = 1 To 7                           ' Schleife über 7 Tage=Zielblätter
datD = Sheets("Ausgang").Cells(1, tt + 2)
With Sheets(Format(datD, "yyyy-mm-dd"))
.Cells(1, 1) = datD
For ii = 0 To 3                     ' Schleife über 4 Gruppen
With .Range(strZ(ii)).Resize(4)
.Value = Sheets("Ausgang").Cells(ii * 4 + 2, 1).Resize(4).Value
.Offset(, 1) = Sheets("Ausgang").Cells(ii * 4 + 2, tt + 2).Resize(4).Value
End With
Next ii
End With
Next tt
End Sub
Leider habe ich nun festgestellt, dass die angelieferten CSV Daten nicht geordnet sind. Das heist in Spalte B steht die jeweilige Gruppe zu der die Person zugeteilt ist. Auch die Länge (Anzahl der Daten) ist von Woche zu Woche unterschiedlich.
Könnt Ihr mir helfen das Makro zu erweitern.
Viele Grüße
Matthias
Anzeige
Variablere Struktur - Rückfrage
24.10.2009 10:44:37
Erich G.
Hi Matthias,
aus deinem Beitrag geht nicht wirklich hervor, welche Struktur Quell- und Zielblätter jetzt haben sollen.
Lade doch bitte mal ein Beispiel hoch, bei dem alles variiert, was jetzt variabel wurde.
Das mit der Sortierung lässt sich ja schon leicht vorher durch einen Sort beheben.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige