Thema Datum  Von Nutzer Rating
Antwort
30.11.2011 21:01:18 Moi
NotSolved
Blau Listen Abgleich
01.12.2011 17:30:37 Till
NotSolved

Ansicht des Beitrags:
Von:
Till
Datum:
01.12.2011 17:30:37
Views:
867
Rating: Antwort:
  Ja
Thema:
Listen Abgleich

Du kannst das so machen:

Option Explicit

Private Sub umstrukturieren()
Dim rng As Range, tAV, AV, R&, I&, E&, E2&, Uns$()
Dim Out, lV, V, MInd&
Dim SpalteLohntext&, SpalteNamen&, SpalteStunden&
    
    SpalteLohntext = 2
    SpalteNamen = 3
    SpalteStunden = 4
    With ActiveSheet
        Set rng = .Range(.Cells(2, .Columns.Count).End(xlToLeft), .Cells(.Rows.Count, 1).End(xlUp)) 'benutzter Bereich
    End With
    
    With rng
        tAV = .Value
        .Sort .Columns(SpalteLohntext)
        AV = .Value
    End With
    getUniques AV, Uns, SpalteLohntext
    E = UBound(Uns)
    With rng
        .Sort .Columns(SpalteNamen)
        AV = .Value
    End With
    
    I = 1
    ReDim Out(E + 1, I)
    E2 = UBound(AV)
    lV = AV(1, SpalteNamen)
    
    For R = 2 To E2
    
        V = AV(R, SpalteNamen)
        MInd = getMatchInd(AV(R - 1, SpalteLohntext), Uns, E) + 1
        Out(MInd, I) = AV(R - 1, SpalteStunden)
        
        If R = E2 Or V <> lV Then
            Out(0, I) = lV
            lV = V
            I = I + 1
            ReDim Preserve Out(E + 1, I)
        End If

    Next
    MInd = getMatchInd(AV(R - 1, SpalteLohntext), Uns, E) + 1
    Out(MInd, I - 1) = AV(R - 1, SpalteStunden)
    I = I - 1
    ReDim Preserve Out(E + 1, I)
    For R = 1 To E + 1
        Out(R, 0) = Uns(R - 1)
    Next
    
    myTP Out, Out
    With Sheets(2)
        .Range(.Cells(1, 10), .Cells(1 + UBound(Out), 10 + UBound(Out, 2))).Value = Out
    End With
    rng.Value = tAV
    
End Sub

Private Function myTP(AV, AVtr)
Dim SaveAV, R&, C&, S1&, S2&, E1&, E2&
SaveAV = AV

    S1 = LBound(AV)
    S2 = LBound(AV, 2)
    E1 = UBound(AV)
    E2 = UBound(AV, 2)
    ReDim AVtr(S2 To E2, S1 To E1)

    For R = S1 To E1
        For C = S2 To E2
            AVtr(C, R) = SaveAV(R, C)
        Next
    Next
    
End Function

Private Function getMatchInd(ByVal str$, Uns$(), ByVal E&) As Long
Dim I&
    
    For I = 0 To E
        If str = Uns(I) Then
            getMatchInd = I
            Exit For
        End If
    Next
    
End Function

Private Sub getUniques(ByVal AV, ByRef Uns$(), ByVal C&)
Dim R&, I&, E&, V, lV
    
    E = UBound(AV)
    lV = AV(1, C)
        
    ReDim Uns(0)
    Uns(0) = lV
    I = 1
    For R = 2 To E
        V = AV(R, C)
        If Not IsError(V) And Not IsError(lV) Then
            If V <> lV Or R = E Then
                ReDim Preserve Uns(I)
                Uns(I) = V
                lV = V
                I = I + 1
            End If
        End If
    Next
    
End Sub

Ausgabe erfolgt im Arbeitsblatt zwei...


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
30.11.2011 21:01:18 Moi
NotSolved
Blau Listen Abgleich
01.12.2011 17:30:37 Till
NotSolved