Clever-Excel-Forum

Normale Version: Datensätze nebeneinader
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe eine Kundendatei, in der die Kunden  untereinander stehen. Soweit alles gut. Nur die Liste ist so aufgebaut, das für jedes Produkt/Artikel eine Zeile verwendet wird. 
Kunde X , Hammburg, Artikel YY, Wert XXX, 
Kunde X, Hamburg, Artikel SSS, Wert FFF
usw. 
Manche Kunden haben vier oder fünf Zeilen, manche nur eine Zeile.


Ich möchte gerne eine Zeile mit Kunde usw und dann alle Artikel nebeneinader. 
Ich habe keine Idee. 

Viele Grüße
Stefan
Hallo


so??

Code:
Sub Kunden()
    Dim TB1 As Worksheet, TB2 As Worksheet, i As Integer, LR1 As Integer
    Dim S1 As Integer, Off As Integer, LC2 As Integer, Zeile As Integer
    Dim KuNu As String
   
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets("ZielTabelle")
   
    S1 = 9 'Artikelnummern ab Spalte I
    Off = 6 'Anzahl der Datenspalten
    With TB1
        LR1 = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
   
        For i = 2 To LR1
            KuNu = .Cells(i, 4)
            If WorksheetFunction.CountIf(TB2.Columns(4), KuNu) > 0 Then
                Zeile = WorksheetFunction.Match(KuNu, TB2.Columns(4), 0) ' Zeile mit Kunden
                LC2 = TB2.Cells(Zeile, TB2.Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
   
                .Cells(i, S1).Resize(1, Off).Copy TB2.Cells(Zeile, LC2 + 1)
            Else
                Zeile = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row + 1
                .Rows(i).Copy TB2.Rows(Zeile)
            End If
           
        Next
    End With
   
End Sub
LG UweD
Hallo Uwe,

danke hat super geklappt  :19:

Nur meine original Datei hat 71.763 Zeilen. Wie wo ändere ich die Zeilen ab?
Ok,

dann als LONG deklarieren


Code:
    Dim TB1 As Worksheet, TB2 As Worksheet, i As Long, LR1 As Long
    Dim S1 As Integer, Off As Integer, LC2 As Integer, Zeile As Long

LG UweD
Sub Kunden()
Dim TB1 As Worksheet, TB2 As Worksheet, i As Long, LR1 As Long
    Dim S1 As Integer, Off As Integer, LC2 As Integer, Zeile As Long
    Dim KuNu As String
 
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets("Tabelle2")
 
    S1 = 9 'Artikelnummern ab Spalte I
    Off = 6 'Anzahl der Datenspalten
    With TB1
        LR1 = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
 
        For i = 2 To LR1
            KuNu = .Cells(i, 4)
            If WorksheetFunction.CountIf(TB2.Columns(4), KuNu) > 0 Then
                Zeile = WorksheetFunction.Match(KuNu, TB2.Columns(4), 0) ' Zeile mit Kunden
                LC2 = TB2.Cells(Zeile, TB2.Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
 
                .Cells(i, S1).Resize(1, Off).Copy TB2.Cells(Zeile, LC2 + 1)
            Else
                Zeile = TB2.Cells(TB2.Rows.Count, "A").End(xlUp).Row + 1
                .Rows(i).Copy TB2.Rows(Zeile)
            End If
         
        Next
    End With
End Sub


[
Bild bitte so als Datei hochladen: Klick mich!
]
Klappt es ?
ja und nein. Die vollen 74.000 Zeilen schafft der Rechner nicht, er hängt sich auf. Ich werde dieses nach Mitarbeitern step by step erstellen. dann sollte es gehen.

Danke noch dafür :)