Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
880to884
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
880to884
880to884
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Aufteilen auf Tabellenblätter

Aufteilen auf Tabellenblätter
25.06.2007 14:40:00
Christian
Hallo Leute,
Ich benötige Eure Hilfe für das folgende Problem:
Ich habe ein Haupttabellenblatt ("Stornos Gesamt"). Auf diesem Tabellenblatt sind in Spalte B Bereichsnummern erfasst. z.B. ( "853" oder "856" oder "859").
Ich möchte nun eine Schleife konstruieren, die die koplette Zeile im Tabellenblatt "Stornos Gesamt" auf die weiteren entsprechenden Tabellenblätter kopiert, deren Namen natürlich auch "853", "856" oder "859" lauten und zwar so lange, solange der Wert nicht ("") ist.
Kann mir einer bei der Auswahl der Schleife und beim Basteln helfen ?
Danke !

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufteilen auf Tabellenblätter
25.06.2007 14:57:41
Reinhard
Hi Christian,
als Ansatz ungetestet.
Möglich sind minimum 2 Dinge, in den Zielblättern wird erst ab Zeile 2 eingetragen.
Weiterhin kann es nicht laufen, dann liegt es an Rows(lngZeile).Copy wo man dann vielleicht noch Enntirerow einbauen müßte oder gleich auf Range(Cells(lngZeile,1),Cells(lngZeile,256)).Copy wechlseln könnte.

Sub tt()
Dim lngZeile As Long
For lngZeile = 1 To Cells(Rows.Count, 2).End(xlUp).Row
With Worksheets(Range("B" & lngZeile))
Rows(lngZeile).Copy Destination:=.Range("A" & .Cells(Rows.Count, 2).End(xlUp).Row + 1)
End With
Next lngZeile
End Sub

Gruß
Reinhard

Anzeige
AW: Aufteilen auf Tabellenblätter
25.06.2007 15:47:00
Christian
Hallo Reinhard,
Du hast gar keine Kriterien angegeben wie "853", "856" oder "859" ich bin ein wenig irretiert.
Oder ist das vielleicht "lngZeile" ?

AW: Aufteilen auf Tabellenblätter
25.06.2007 19:53:23
Reinhard
Hallo Christian,
du hast sehr sehr Recht :-(, völliger Blödsinn :-)
Frage noch offen.
Gruß
Reinhard

AW: Aufteilen auf Tabellenblätter
26.06.2007 09:00:00
Chaos
servus Christian,
meintest du sowas in der Art:

Sub test()
Dim t As Byte
Dim z As Range, b As Range
t = Sheets(1).Range("B65536").End(xlUp).Offset(0, 0).Row
Set b = Sheets(1).Range("B2:B" & t)
Application.ScreenUpdating = False
For Each z In b
If z.Value = 853 Then
z.EntireRow.Copy
End If
Sheets(2).Activate
Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Insert
Sheets(1).Activate
Next z
Application.ScreenUpdating = True
End Sub


Jetzt mal nur für 853, musst du dann natürlich noch anpassen. Sheets(2), wäre dann z.B.: Sheets("853")
Gruß
Chaos

Anzeige
AW: Aufteilen auf Tabellenblätter
26.06.2007 14:50:00
Christian
Hallo Chaos,
läuft super, aber leider fügt er komplette Zeilen ein und setzt nicht nur die Werte ab zeile 7 ein.
Bekommst Du das auch noch hin ?

AW: Aufteilen auf Tabellenblätter
26.06.2007 19:19:00
Chaos
servus,
jetzt doppelt.
welche Werte (Zeile, Spalte), sollen wohin ?
Gruß
Chaos

AW: Aufteilen auf Tabellenblätter
26.06.2007 19:42:16
Chaos
Servus,
meintest du eventuell so:

Sub test()
Dim t As Byte
Dim zähler As Integer
Dim n As String
Dim z As Range, b As Range
t = Sheets(1).Range("B65536").End(xlUp).Offset(0, 0).Row
Set b = Sheets(1).Range("B2:B" & t)
Application.ScreenUpdating = False
For zähler = 853 To 859 Step 3
n = zähler
For Each z In b
If z.Value = zähler Then
Sheets(n).Range("B65536").End(xlUp).Offset(1, 0).Value = z.Value
End If
Next z
Next zähler
Application.ScreenUpdating = True
End Sub


Gruß
Chaos

Anzeige
AW: Aufteilen auf Tabellenblätter
27.06.2007 12:18:44
Christian
Hallo Chaos,
großartig - klappt wie verrückt !
aber die Eintragungen sollen die komplette Zeile ab Zeile Nr. 7 in jedem Tabellenblatt befüllen.

Sub test()
Dim t As Byte
Dim zähler As Integer
Dim n As String
Dim LoLetzte As Long
Dim z As Range, b As Range
t = Worksheets("Stornos Gesamt").Range("B65536").End(xlUp).Offset(0, 0).Row
Set b = Worksheets("Stornos Gesamt").Range("B2:B" & t)
Application.ScreenUpdating = False
For zähler = 853 To 859 Step 3
n = zähler
For Each z In b
If z.Value = zähler Then
Sheets(n).Range("B65536").End(xlUp).Offset(1, 0).Value = z.Value
End If
Next z
Next zähler
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Aufteilen auf Tabellenblätter
27.06.2007 13:03:16
Chaos
Servus Christian,
was heißt die komplette Zeile ab zeile 7 ? 260 Einträge mit 853 bzw. 856, u.s.w., oder meinst du die Einträge neben den gesuchten Zellen, also z(1,1) und z(1,2), u.s.w.
wie viele Spalten sind das denn?
Beschreib mal genauer, was du willst, welche werte, wohin geschrieben werden sollen. Ohne eine genaue Beschreibung kann ich damit nichts anfangen.
das mit Zeile 7 ist ja noch einigermaßen verständlich, aber der Rest ?!
Gruß
Chaos

AW: Aufteilen auf Tabellenblätter
27.06.2007 13:05:29
Chaos
Servus Christian,
was heißt die komplette Zeile ab zeile 7 ? 260 Einträge mit 853 bzw. 856, u.s.w., oder meinst du die Einträge neben den gesuchten Zellen, also z(1,1) und z(1,2), u.s.w.
wie viele Spalten sind das denn?
Beschreib mal genauer, was du willst, welche werte, wohin geschrieben werden sollen. Ohne eine genaue Beschreibung kann ich damit nichts anfangen.
das mit Zeile 7 ist ja noch einigermaßen verständlich, aber der Rest ?!
Gruß
Chaos

Anzeige
AW: Aufteilen auf Tabellenblätter
27.06.2007 16:06:54
Chaos
Servus,
ich nochmal:

Sub neu1()
Dim t As Integer, zähler As Integer, i As Integer, a As Integer
Dim n As String
Dim zeile As Long
t = Worksheets("Tabelle1").Range("B65536").End(xlUp).Offset(0, 0).Row
For zähler = 853 To 859 Step 3
n = zähler
For zeile = 2 To t Step 1
If Worksheets("Tabelle1").Cells(zeile, 2).Value = zähler Then
If Sheets(n).Range("A65536").End(xlUp).Offset(1, 0).Row 


Hab mal das makro etwas überarbeitet. Ich weiß ja immer noch nicht, was du genau willst.
Das alte makro gibt bei vielen Werten einen Überlauf. Das macht das neue nicht mehr und fügt die Werte dann auch ab Zeile 7 ein.
Dann hab ich dir mal die Zelle neben der Suchzelle auch noch rübergeschrieben. Das geht für alle Zellen so, wobei die Zahl in Cells(zeile, x), also x, für die jeweilige Spalte steht, also 2 für B, u.s.w..
Jetzt kannst du mal basteln. Wenn deine Tabelle eine bestimmte Anzahl an Spalten hast, musst du das eben x-mal schreiben, da du ja nicht die gesamte Zeile kopieren willst.
Gruß
Chaos

Anzeige
AW: Aufteilen auf Tabellenblätter
28.06.2007 12:15:36
Christian
Hallo Chaos,
Der letzte Halbsatz in Deiner letzten Mail : Wenn deine Tabelle eine bestimmte Anzahl an Spalten hast, musst du das eben x-mal schreiben, da du ja nicht die gesamte Zeile kopieren willst.
stimmt so nicht. Ich möchte sehr wohl die kompletten Einträge kopieren, aber die kopierten Zeilen sollen nicht eingefügt werden, sondern nur deren Werte !

AW: Aufteilen auf Tabellenblätter
28.06.2007 14:38:44
Christian
Hallo Chaos - ich nochmal.
Ich Habe eine Tabell mit ca 800 Eintragen beginnend in Zeile sieben bis Spalte H.
Diese Einträge fangen alle mit der Filialnr. z.B.: 853 oder 856 oder 859... an.
Ein Makro soll auf ButtonKlick die Einträge jeweils sortiert nach Filialnr in die Tabellenblätter 853, 856 und 859 usw. veteilen. Dazu möchte ich eine Schleife konstruieren, die in der Haupttabelle ( die mit den 800 Einträgen) "Stornos Gesamt" die Spalte B durchsucht und wenn z.B. "853" gefunden, die kompletten Zeileninhalte kopiert und in das Tabellenblatt "853" die Werte ab Zeile 7 reinkopiert. genauso bei den anderen ( "856" , "859" usw.)
jetzt verständlicher ?

Anzeige
AW: Aufteilen auf Tabellenblätter
29.06.2007 08:59:37
Christian
Hallo Chaos,
ich habe alles mit dem folgenden Code hinbekommen. Leider verwendet VBA in der Zieltabelle immer die gleiche Zeile => somit erscheint immer der letzte gefundene Eintrag in der jeweiligen Liste.
Ich vermute hier fehlt noch ein weiterer Zähler oder ?

Private Sub CommandButton2_Click()
Dim t As Integer, zähler As Integer, i As Integer, a As Integer
Dim n As String
Dim l As String
Dim zeile As Long
t = Worksheets("Stornos Gesamt").Range("B65536").End(xlUp).Offset(0, 0).Row
For zähler = 853 To 859 Step 1
n = zähler
For zeile = 1 To 800 Step 1
If Worksheets("Stornos Gesamt").Cells(zeile, 2).Value = zähler Then
If Sheets(n).Range("A65536").End(xlUp).Offset(1, 0).Row 


Anzeige
AW: Aufteilen auf Tabellenblätter
29.06.2007 14:18:19
Chaos

Private Sub CommandButton2_Click()
Dim zähler As Integer
Dim n As String
Dim zeile As Long
For zähler = 853 To 859 Step 3
n = zähler
For zeile = 1 To 800 Step 1
If Worksheets("Stornos Gesamt").Cells(zeile, 2).Value = zähler Then
If Sheets(n).Range("B65536").End(xlUp).Offset(1, 0).Row 


So jetzt passt das.
Das Makro prüft hier: If Sheets(n).Range("B65536").End(xlUp).Offset(1, 0).Row Gesamt").Cells(zeile, 2).Value und schreibt in die erste freie Zelle, sonst springt es hierhin Sheets(n).Range("B7").Value = Worksheets("Stornos Gesamt").Cells(zeile, 2).Value und schreibt in B7.
Gruß
Chaos

Anzeige
AW: Aufteilen auf Tabellenblätter
29.06.2007 16:58:23
Christian
Hallo Chaos,
Habe selbst ein bischen ausprobiert und bin bei folgendem gelandet:

Private Sub CommandButton2_Click()
Dim zähler As Integer
Dim n As String
Dim zeile As Long
For zähler = 853 To 859 Step 3
n = zähler
For zeile = 1 To 800 Step 1
If Worksheets("Stornos Gesamt").Cells(zeile, 2).Value = zähler Then
If Sheets(n).Range("B65536").End(xlUp).Offset(1, 0).Row 


Jetzt mekert er: Fehler 91 - dass eine Blockvariable nicht difiniert ist. sonst alles Bestens !!
wenn Du ne Idee hast nur zu ich gehe sonst erst am Montag wieder dabei. Für Dich ein schönes WE :-)

AW: Aufteilen auf Tabellenblätter
29.06.2007 18:49:00
Chaos
Servus Christian,
was soll denn das sein?
Was willst du mit dieser Konstruktion bezwecken ? Wundert mich, dass das beim ersten Mal überhaupt funktioniert.
Gruß und schönes WE
Chaos

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige