Anzeige
Archiv - Navigation
792to796
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
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Kopieren in Tabellenblätter!

Kopieren in Tabellenblätter!
23.08.2006 15:12:33
Krutzler
Hallo zusammen!
Ich hab wieder mal ein Problem:
Im Tabellenblatt "Alle" habe ich eine Liste über vier Spalten "Fil", "LG", "LN" und "FL".
Nun will ich diese Liste durchsuchen lassen und die Inhalte der restlichen Zellen in denen sich in der Spalte "LN" der Wert "Mo" zu finden ist in das Tabellenblatt "LN-MO" kopieren lassen, dann weiter mit "Di" bis "Sa"
Folgendes Makro hab ich mir aus einem anderen Makro, bei dem ein ähnliches Problem vorlag, zusammengebastelt:

Sub Test()
Dim Zeile, maxZeilen, Spaltenbeginn, Spaltenende As Double
maxZeilen = 3000
Spaltenbeginn = 134  'hier ändern für EO z.B. Spaltenbeginn = 145
Spaltenende = 137    'hier ändern für EV z.B. Spaltenende = 152
For i = 1 To 4
Worksheets(i).Range("ED4:EG3000").Value = ""
Next i
Zeile = 3
For i = 3 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Mo*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-MO").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
Zeile = 3
For i = 3 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Di*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-DI").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
Zeile = 3
For i = 3 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Mi*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-MI").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
Zeile = 3
For i = 4 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Do*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-DO").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
Zeile = 3
For i = 3 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Fr*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-FR").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
Zeile = 3
For i = 3 To maxZeilen
If Worksheets("Alle").Cells(i, 136).Value = "*Sa*" And Worksheets("Alle").Cells(i, 135).Value = "LN" Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-SA").Cells(Zeile, j).Value = Worksheets("Alle").Cells(i, j).Value
Next j
Zeile = Zeile + 1
End If
Next i
End Sub

Das einzige, was ich damit erreiche ist, daß die Spalten ED bis EG danach leer sind und sonst gar nichts.
Hier ist die Excel-Tabelle, falls ich mich unklar ausgedrückt habe:
https://www.herber.de/bbs/user/36079.xls
Bitte um Hilfe! Danke!
lg Andreas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren in Tabellenblätter!
23.08.2006 16:26:39
Heide_Tr
hallo Andreas,
eigentlich sieht Dein Code in Ordnung aus,
ED bis EG werden gelöscht, weil Du am Anfang für die ersten vier Tabellenblätter definierst:
For i = 1 To 4
Worksheets(i).Range("ED4:EG3000").Value = ""
Next i
Ich habe Deinen Code nachprogrammiert und dabei zusammengefasst:

Sub test()
Spaltenbeginn = 145  'hier ändern für EO z.B. Spaltenbeginn = 145
Spaltenende = 152    'hier ändern für EV z.B. Spaltenende = 152
Worksheets("Alle").Select
For Each Tag In Array("Mo", "Di", "Mi", "Do", "Fr", "Sa")
Zeile = 3
For i = 3 To Range("EF65536").End(xlUp).Row
If Range("EE" & i) = "LN" And InStr(1, Range("EF" & i), Tag) > 0 Then
For j = Spaltenbeginn To Spaltenende
Worksheets("LN-" & UCase(Tag)).Cells(Zeile, j) = Cells(i, j)
Next j
Zeile = Zeile + 1
End If
Next i
Next Tag
End Sub

und es ist eigentlich alles in Ordnung. Findet er in EF den Wochentag, kopiert er EO bis EV auf das betroffene Tabellenblatt. Das war doch Dein Ziel, nicht?
viele Grüße. Heide
Anzeige
AW: Kopieren in Tabellenblätter!
29.08.2006 09:37:11
Krutzler
Hallo Heide!
Erstmal recht herzlichen Dank für Deine rasche Hilfe, aber irgendwie tut sich bei mir da gar nichts :-(
Nochmal kurz zur Erklärung:
sobald sich in der Spalte EF unter anderem der Eintrag "Mo" oder "Di", ... oder "Sa" und in der Spalte EE "LN" findet, soll der Inhalt der Spalten ED bis EG der jeweiligen Zeile in das betreffende Tabellenblatt kopiert werden - zum Beispiel: ED4 bis EG4 sollte in die Blätter "LN-MO", "LN-DI", "LN-MI", "LN-DO", "LN-FR" kopiert werden, da in der Zelle EF4 "MoDiMiDoFr" steht, ED7 bis EG7 hingegen nur in die Blätter "LN-DI" und "LN-DO", da in der Zelle EF7 "DiDo" steht.
Dein Vorschlag funktioniert, so glaube ich, deshalb nicht, weil nur nach "Mo", "Di" ... "Sa" gesucht wird - ich hab zwar schon versucht nach "*Mo*", "*Di*" ... "*Sa" suchen zu lassen, funktioniert aber auch nicht :-(
Hoffe, daß ich mich nun klar ausgedrückt habe.
Danke!
lg Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige