PDA

Vollständige Version anzeigen : mehrere Zeilen in einer Zeile zusammenfassen


beamtenversteher
07.01.2014, 09:27
Guten Morgen,

folgenden Sachverhalt (siehe Screenshot) möchte ich für meherere tausend Zeilen durchführen.
Leider bekomme ich es noch nicht korrekt hin.

Mit diesem Code habe ich meine ersten Versuche gestartet:


Sub Zusammenfassen()
Dim WksQ As Worksheet, Found As Object, Felder As Variant, i As Long
Dim Spalte As Long, Zeile As Long, CopySpalte As Long, CopyZeile As Long

Set WksQ = Sheets(Quelle)

Application.ScreenUpdating = False

With Sheets(Ziel)
Felder = .Rows(1).Value

.Cells.ClearContents

.Rows(1).Value = Felder

Zeile = StartZeile

For i = StartZeile To WksQ.Cells(WksQ.Rows.Count, "A").End(xlUp).Row
If Not IsEmpty(WksQ.Cells(i, "A")) Then
Set Found = .Columns("A").Find(WksQ.Cells(i, "D"), LookIn:=xlValues, LookAt:=xlWhole)

If Found Is Nothing Then
Range(WksQ.Cells(i, "A"), WksQ.Cells(i, "D")).Copy .Cells(Zeile, "A")
CopyZeile = Zeile: Zeile = Zeile + 1
Else
CopyZeile = Found.Row
End If

CopySpalte = WksQ.Cells(i, WksQ.Columns.Count).End(xlToLeft).Column

WksQ.Cells(i, CopySpalte).Copy .Cells(CopyZeile, CopySpalte)
End If
Next
End With

Application.ScreenUpdating = True

End Sub

Hat jemand noch eine Idee, wie ich es kurzfristig lösen kann?

vg

chris-kaiser
07.01.2014, 09:37
Hi,

das wäre mit einer Pivottabelle in ein paar Sek. erledigt.

beamtenversteher
07.01.2014, 10:34
Hallo + Danke für den Ansatz.
Trotzdem habe ich es noch nicht verstanden. Klappt dies auch mit Inhalten und nicht mit "x"-en
Wenn ich das bei mir nachspiele funktioniert es nicht....

Grüße

chris-kaiser
07.01.2014, 11:12
Hi,

so müsste noch eine kleine Hilfe eingebaut werden....

beamtenversteher
09.01.2014, 12:53
Hallo + Danke,

leider nicht die Lösung, da Du mit der Formatierung ja immer nur einen Wert in die Spalte bekommt (also z.b. [>0]"1-open";;;)
Die Werte können ja je Zelle unterschiedlich sein.

Daher noch einmal die Frage zu einem gescheiten Script (siehe Eingangspost)

Oder um es in Worte zu fassen:

Ich brauche eine Prüfung, die mir eine oder mehrere Zeilen in einer Zeile verdichtet.
Voraussetzung zur Verdichtung:
Zellen A1:E1 müssen inhaltlich identisch ein, dann kopiere F2:J2 auf F1:J1
Ausnahme bereits gefüllte Zellen im Zielbereich (also F1:J1) sollen nicht mit "leer" überschrieben werden


grüße

chris-kaiser
09.01.2014, 15:30
Hallo,

vielleicht wäre es Dir möglich eine passende Beispieldatei zu erzeugen...
A:E ? das ALL soll berücksichtigt werden?

unterschiedliche Einträge?

und dein geposteter Code macht ja auch etwas ganz anderes..
bzw. kann dies ja nicht der vollständige Code sein, da sind sicherlich noch globale Variablen vergeben werden oder sonst noch was...

Es werden Werte von Spalte A mit Spalte D verglichen, B und C haben anscheinend keinen Einfluss.

Zellen A1:E1 müssen inhaltlich identisch ein, dann kopiere F2:J2 auf F1:J1

Das mal übersetzt würde bedeuten, alle Werte in A1 bis E1 müssen gleich sein. in A1 der gleiche Text wie in B1, C1, D1, E1 also 5 mal gleicher Eintrag, wenn das so ist kopiere den Bereich der Zeile darunter in nichtleere Zellen der Zeile 1.

Ich denke mal auch diese Beschreibung entspricht nicht dem was erreicht werden sollte.

beamtenversteher
10.01.2014, 20:11
Nabend,

evtl bin ich nicht scharf genug in meiner Formulierung gewesen.
Anbei noch mal ein sprechenderes File.
Wenn die Zeilen-Inhalte in Spalten A und B gleich sind dann kopiere die Werte ab Spalte C eine Zeile nach oben.

Beduetet im Beispiel:
Zeilen 2 und 3 werden in Zeile 11 konsolidiert und Zeilen 4-6 in Zeile 12.
Dazwischen kann es auch Zeilen geben , wo A und B nur einmal vorkommen.

grüße

chris-kaiser
13.01.2014, 17:36
Hi,

Ich dachte A bis E soll was verglichen werden?
Anbei noch mal ein sprechenderes File. :)
nun hast du in der Bsp.Datei eigentlich schon mit Spalte A eine Eindeutigkeit?

Ok..., ich habe mal für deine Bsp.Datei ein einfaches Konstrukt eingebaut, welches dafür die Lösung wäre.

Nur.......,