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

Zeilen trotz Aufteilung übernehmen

Zeilen trotz Aufteilung übernehmen
29.11.2016 10:42:15
Julia
Hallo,
da ich von VBA nicht so viel Ahnung habe und hier auch echt nicht weiterkomme, habe ich mal nachfolgend meinen Code aufgeführt.
Ich möchte damit aus einer Gesamtliste (ZB) die einzelnen Begriffe (die mehrfach vorkommen) raussuchen und die zugehörigen Zeilen komplett in einem neuen Tabellenblatt zusammenkopieren , d.h. wenn ein Begriff auf dem Tabellenblatt "ZB" insgesamt fünf mal vorkommt, so soll er diese Zeilen nehmen und in eine neues Tabellenblatt schreiben, welches den Namen des Begriffes trägt (dort sind dann quasi 5 Zeilen beschrieben)
Code funktioniert auch super, aber ich komm bei dem letzten Problem nicht weiter:
Die Zeilen 1-8 vom ZB-Blatt will ich auch auf den ganzen anderen Blättern, die entstanden sind, haben! Und dieses gelingt mir nicht :-(. (ich vermute mal, dass es mit dem X1up zu tun hat, da er von "unten" loszählt, oder?

Kann mir da jemand weiterhelfen?
mein Code:

Sub DatenInExtraBlatt()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim lngLZQ As Long
Dim lngLZZ As Long
Dim zell As Range
Dim Dic As Object
Dim keyD As Variant
Set Dic = CreateObject("Scripting.Dictionary")
Set wksQ = Worksheets("ZB") 'ggf. ANPASSEN
For Each wksZ In Worksheets
Dic(wksZ.Name) = ""
Next
lngLZQ = wksQ.Cells(wksQ.Rows.Count, 3).End(xlUp).Row '3=SpalteC
For Each zell In wksQ.Range("B2:B" & lngLZQ)
If zell.Value  "" Then
If Not Dic.Exists(zell.Value) Then
Dic(zell.Value) = "clear"
Set wksZ = Worksheets.Add(After:=Sheets(Sheets.Count))
wksZ.Name = zell.Value
Else
Set wksZ = Worksheets(zell.Value)
If Dic(zell.Value)  "clear" Then
Dic(zell.Value) = "clear"
wksZ.UsedRange.Clear 'Zieltabelle säubern
End If
End If
lngLZZ = wksZ.Cells(wksZ.Rows.Count, 3).End(xlUp).Row '3=SpalteC
zell.EntireRow.Copy wksZ.Range("A" & lngLZZ + 1)
End If
Next
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das hätte was damit zu tun, ...
29.11.2016 11:34:23
Luc:-?
…Julia,
wenn im Pgm tatsächlich x1Up stehen würde. Es steht aber richtig xlUp dort! ;-]
Nee, der Teil mit den 1. 8 Zeilen kommt gar nicht im Pgm vor und müsste separat übernommen wdn, wenn der auf jedem Folgeblatt gleich und vorhanden sein soll, falls ich dich richtig verstanden habe.
Gruß, Luc :-?
Besser informiert mit …
AW: Zeilen trotz Aufteilung übernehmen
29.11.2016 11:38:17
UweD
Hallo
ungetestet:
die markierte Zeile einfügen:
                Set wksZ = Worksheets.Add(After:=Sheets(Sheets.Count))
                wksZ.Name = zell.Value
                wksQ.Rows("1:8").Copy wksZ.Rows(1) '*** NEU 
            Else
                Set wksZ = Worksheets(zell.Value)

LG UweD
Anzeige
AW: Zeilen trotz Aufteilung übernehmen
29.11.2016 15:19:15
Julia
Hallo UweD,
vielen herzlichen Dank für die tolle und schnelle Unterstützung. (habe deine NEU-Kennzeichnung extra drin gelassen, damit du siehst was ich eingetragen habe)
Ich habe jedoch noch ein Problem, welches jetzt aufgetaucht ist:
2.) er fügt die Zeilen 1-6 auch ein ...aber überschreibt dann ab Zelle A2 mit den Werten. Und ich habe noch nicht rausgefunden was ich da nun wieder abändern miss, damit er erst ab Zeile ( bzw. A7 die Werte /Begriffe reinschreibt)
Vielleicht kannst du (oder jemand anderes) noch mal helfen.
Vielen Dank im Voraus.
Hier der Code:
Sub DatenInExtraBlatt()
Dim wksQ As Worksheet
Dim wksZ As Worksheet
Dim lngLZQ As Long
Dim lngLZZ As Long
Dim zell As Range
Dim Dic As Object
Dim keyD As Variant
Set Dic = CreateObject("Scripting.Dictionary")
Set wksQ = Worksheets("ZB") 'ggf. ANPASSEN
For Each wksZ In Worksheets
Dic(wksZ.Name) = ""
Next
lngLZQ = wksQ.Cells(wksQ.Rows.Count, 3).End(xlUp).Row '3=SpalteC
For Each zell In wksQ.Range("B8:B" & lngLZQ)
If zell.Value  "" Then
If Not Dic.Exists(zell.Value) Then
Dic(zell.Value) = "clear"
Set wksZ = Worksheets.Add(After:=Sheets(Sheets.Count))
wksZ.Name = zell.Value
wksQ.Rows("1:6").Copy wksZ.Rows(1) '****NEU
Else
Set wksZ = Worksheets(zell.Value)
'wksZ.Name = zell.Value
'Else
' Set wksZ = Worksheets(zell.Value)
If Dic(zell.Value)  "clear" Then
Dic(zell.Value) = "clear"
wksZ.UsedRange.Clear 'Zieltabelle säubern
End If
End If
lngLZZ = wksZ.Cells(wksZ.Rows.Count, 3).End(xlUp).Row '3=SpalteC
zell.EntireRow.Copy wksZ.Range("A" & lngLZZ + 1)
End If
Next
End Sub

Anzeige
AW: Zeilen trotz Aufteilung übernehmen
29.11.2016 15:34:28
UweD
Hi

lngLZZ = wksZ.Cells(wksZ.Rows.Count, 3).End(xlUp).Row '3=SpalteC
zell.EntireRow.Copy wksZ.Range("A" & lngLZZ + 1)
Damit wird die letzte Zeile in der SPALTE C (=3) ermittelt und dann in der Darunterliegenden (lngLZZ + 1) eingefügt.
Ist denn nach dem kopieren der Zeilen 1 bis 6 in SPALTE C auch was drin? Wenn nur in A oder/und B?
Dann musstest du ggf. die Spalte zur Ermittlung der letzten Zeile ändern.
Am einfachsten wäre es, wenn du mal eine Mustermappe hochlädst.
LG UweD
AW: Zeilen trotz Aufteilung übernehmen
29.11.2016 16:18:28
Julia
Hallo UweD,
ja manchmal steht man auf der "Leitung", ich hatte es ja extra hingeschrieben,
dass es sich auf Spalte C bezieht!!!
Ich danke dir recht herzlich, denn das Problem war wirklich einfach nur, dass in diesen besagten Zellen 1-6 die Spalte C nicht gefüllt war. Ich habe da jetzt einfach einen Buchstaben reingeschrieben und den farblich so formatiert, dass es nicht erkennbar ist.
Und jetzt funktioniert es einwandfrei!!!
Ich danke dir!!!
Anzeige
Ok, danke für die Rückmeldung.
29.11.2016 16:27:09
UweD
AW: Ok, danke für die Rückmeldung.
29.11.2016 16:31:55
Julia
ich habe zu danken!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige