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:
1008
Rating: Antwort:
  Ja
Thema:
Listen Abgleich

Du kannst das so machen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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