Microsoft Excel

Herbers Excel/VBA-Archiv

Vergleichstabelle mit Makro

Betrifft: Vergleichstabelle mit Makro von: Sebastian
Geschrieben am: 17.09.2014 10:50:18

Hallo!

Ich habe folgendes Problem:

Ich möchte Datensätze miteinander vergleichen, und dazu bestimme Zeilen aus aus zwei Tabellenblättern per Makro rauskopieren und in ein Tabellenblatt drei in bestimmte Zeilen einfügen lassen. Soweit so gut. Ich habe dazu versucht folgendes Makro zu schreiben:

Sub Daten2013()
'Variablen Deklaration
Dim Z1 As Integer
Dim Z2 As Integer
Dim Ende As Integer
Dim Ende2 As Integer
Dim Daten2013 As Variant
Dim Daten1017 As Variant
Dim Daten1029 As Variant
Dim Daten7020 As Variant
Dim Daten7060 As Variant
Dim Daten7100 As Variant
Dim Daten7140 As Variant
Dim Daten7220 As Variant
Dim Daten7300 As Variant
Dim Daten7305 As Variant
Dim Daten7380 As Variant
Dim Daten7400 As Variant
Dim Daten7500 As Variant
Dim Daten7520 As Variant
Dim Daten7700 As Variant
Dim Daten7720 As Variant
Dim Daten7740 As Variant
Dim Daten7780 As Variant
Dim Daten7805 As Variant
Dim Daten7810 As Variant
Dim Daten7830 As Variant
Dim Daten7840 As Variant
Dim Daten7850 As Variant
Dim Daten7860 As Variant
Dim Name As Variant
Dim Konto1 As Variant
Dim Konto2 As Variant
'Setzen der Startwerte
Z1 = 2
Z2 = 3
Ende = 600
Ende2 = 600

'Tabelle2 Inhalt Spalte B, C, D löschen
Worksheets("Vergleich").Range("B3:B600").Delete
Worksheets("Vergleich").Range("C3:C600").Delete
Worksheets("Vergleich").Range("F3:F600").Delete
Worksheets("Vergleich").Range("I3:I600").Delete
Worksheets("Vergleich").Range("L3:L600").Delete
Worksheets("Vergleich").Range("O3:O600").Delete
Worksheets("Vergleich").Range("R3:R600").Delete
Worksheets("Vergleich").Range("U3:U600").Delete
Worksheets("Vergleich").Range("X3:X600").Delete
Worksheets("Vergleich").Range("AA3:AA600").Delete
Worksheets("Vergleich").Range("AD3:AD600").Delete
Worksheets("Vergleich").Range("AG3:AG600").Delete
Worksheets("Vergleich").Range("AJ3:AJ600").Delete
Worksheets("Vergleich").Range("AM3:AM600").Delete
Worksheets("Vergleich").Range("AP3:AP600").Delete
Worksheets("Vergleich").Range("AS3:AS600").Delete
Worksheets("Vergleich").Range("AV3:AV600").Delete
Worksheets("Vergleich").Range("AY3:AY600").Delete
Worksheets("Vergleich").Range("BB3:BB600").Delete
Worksheets("Vergleich").Range("BE3:BE600").Delete
Worksheets("Vergleich").Range("BH3:BH600").Delete
Worksheets("Vergleich").Range("BK3:BK600").Delete
Worksheets("Vergleich").Range("BN3:BN600").Delete
Worksheets("Vergleich").Range("BQ3:BQ600").Delete
Worksheets("Vergleich").Range("BT3:BT600").Delete
Worksheets("Vergleich").Range("BW3:BW600").Delete
' Tabelle1 Spalte A Suchen ersetzen " " durch ""
Worksheets("Summen2013").Range("A:A").Replace What:=" ", Replacement:=""
'Schleifen sortieren & zuordnen der Werte
Do While Z1 < Ende
   Konto1 = Worksheets("Summen2013").Range("A" & Z1).Value
       Do While Z2 < Ende2
        Konto2 = Worksheets("Vergleich").Range("A" & Z2 + 1).Value
        If Konto1 = Konto2 Then
            Daten2013 = Worksheets("Summen2013").Range("C" & Z1).Value
            Daten1017 = Worksheets("Summen2013").Range("E" & Z1).Value
            Daten1019 = Worksheets("Summen2013").Range("G" & Z1).Value
            Daten1029 = Worksheets("Summen2013").Range("I" & Z1).Value
            Daten7020 = Worksheets("Summen2013").Range("K" & Z1).Value
            Daten7060 = Worksheets("Summen2013").Range("M" & Z1).Value
            Daten7100 = Worksheets("Summen2013").Range("Q" & Z1).Value
            Daten7140 = Worksheets("Summen2013").Range("S" & Z1).Value
            Daten7220 = Worksheets("Summen2013").Range("U" & Z1).Value
            Daten7300 = Worksheets("Summen2013").Range("X" & Z1).Value
            Daten7305 = Worksheets("Summen2013").Range("Z" & Z1).Value
            Daten7380 = Worksheets("Summen2013").Range("AB" & Z1).Value
            Daten7400 = Worksheets("Summen2013").Range("AD" & Z1).Value
            Daten7500 = Worksheets("Summen2013").Range("AF" & Z1).Value
            Daten7520 = Worksheets("Summen2013").Range("AH" & Z1).Value
            Daten7700 = Worksheets("Summen2013").Range("AJ" & Z1).Value
            Daten7720 = Worksheets("Summen2013").Range("AL" & Z1).Value
            Daten7740 = Worksheets("Summen2013").Range("AN" & Z1).Value
            Daten7780 = Worksheets("Summen2013").Range("AP" & Z1).Value
            Daten7805 = Worksheets("Summen2013").Range("AR" & Z1).Value
            Daten7810 = Worksheets("Summen2013").Range("AT" & Z1).Value
            Daten7830 = Worksheets("Summen2013").Range("AV" & Z1).Value
            Daten7840 = Worksheets("Summen2013").Range("AX" & Z1).Value
            Daten7850 = Worksheets("Summen2013").Range("AZ" & Z1).Value
            Daten7860 = Worksheets("Summen2013").Range("BB" & Z1).Value
            Name = Worksheets("Summen2013").Range("B" & Z1).Value
                'If Z2 < 350 Then
                    'Daten2013 = Daten2013 * -1
                    'Daten1017 = Daten1017 * -1
                'End If
            Worksheets("Vergleich").Range("C" & Z2 + 1) = Daten2013
            Worksheets("Vergleich").Range("F" & Z2 + 1) = Daten1017
            Worksheets("Vergleich").Range("I" & Z2 + 1) = Daten1019
            Worksheets("Vergleich").Range("O" & Z2 + 1) = Daten1029
            Worksheets("Vergleich").Range("R" & Z2 + 1) = Daten7020
            Worksheets("Vergleich").Range("X" & Z2 + 1) = Daten7060
            Worksheets("Vergleich").Range("AA" & Z2 + 1) = Daten7100
            Worksheets("Vergleich").Range("AD" & Z2 + 1) = Daten7140
            Worksheets("Vergleich").Range("AG" & Z2 + 1) = Daten7220
            Worksheets("Vergleich").Range("AJ" & Z2 + 1) = Daten7300
            Worksheets("Vergleich").Range("AM" & Z2 + 1) = Daten7305
            Worksheets("Vergleich").Range("AP" & Z2 + 1) = Daten7380
            Worksheets("Vergleich").Range("AS" & Z2 + 1) = Daten7400
            Worksheets("Vergleich").Range("AV" & Z2 + 1) = Daten7500
            Worksheets("Vergleich").Range("AY" & Z2 + 1) = Daten7520
            Worksheets("Vergleich").Range("BB" & Z2 + 1) = Daten7700
            Worksheets("Vergleich").Range("BE" & Z2 + 1) = Daten7720
            Worksheets("Vergleich").Range("BH" & Z2 + 1) = Daten7740
            Worksheets("Vergleich").Range("BK" & Z2 + 1) = Daten7780
            Worksheets("Vergleich").Range("BN" & Z2 + 1) = Daten7805
            Worksheets("Vergleich").Range("BQ" & Z2 + 1) = Daten7810
            Worksheets("Vergleich").Range("BT" & Z2 + 1) = Daten7830
            Worksheets("Vergleich").Range("BW" & Z2 + 1) = Daten7840
            Worksheets("Vergleich").Range("BZ" & Z2 + 1) = Daten7850
            Worksheets("Vergleich").Range("CC" & Z2 + 1) = Daten7860
            Worksheets("Vergleich").Range("B" & Z2 + 1) = " " & Name
         End If
        Z2 = Z2 + 1
        Loop
    Z1 = Z1 + 1
    Z2 = 2
Loop
End Sub

Sub Daten2014()
'Variablen Deklaration
Dim Z3 As Integer
Dim Z4 As Integer
Dim Ende As Integer
Dim Ende2 As Integer
Dim Daten2014 As Variant
Dim Daten10172 As Variant
Dim Daten10202 As Variant
Dim Daten10292 As Variant
Dim Daten70202 As Variant
Dim Daten70402 As Variant
Dim Daten70602 As Variant
Dim Daten71002 As Variant
Dim Daten71402 As Variant
Dim Daten72202 As Variant
Dim Daten73052 As Variant
Dim Daten73802 As Variant
Dim Daten74002 As Variant
Dim Daten75002 As Variant
Dim Daten75202 As Variant
Dim Daten77002 As Variant
Dim Daten77202 As Variant
Dim Daten77402 As Variant
Dim Daten78052 As Variant
Dim Daten78102 As Variant
Dim Daten78302 As Variant
Dim Daten78402 As Variant
Dim Daten78502 As Variant
Dim Daten78602 As Variant
Dim Name2 As Variant
Dim Konto3 As Variant
Dim Konto4 As Variant
'Setzen der Startwerte
Z3 = 2
Z4 = 3
Ende = 600
Ende2 = 600


'Worksheets("Vergleich").Range("B3:B600").Delete
Worksheets("Vergleich").Range("D3:D600").Delete
Worksheets("Vergleich").Range("G3:G600").Delete
Worksheets("Vergleich").Range("J3:J600").Delete
Worksheets("Vergleich").Range("M3:M600").Delete
Worksheets("Vergleich").Range("P3:P600").Delete
Worksheets("Vergleich").Range("S3:S600").Delete
Worksheets("Vergleich").Range("V3:V600").Delete
Worksheets("Vergleich").Range("Y3:Y600").Delete
Worksheets("Vergleich").Range("AB3:AB600").Delete
Worksheets("Vergleich").Range("AE3:AE600").Delete
Worksheets("Vergleich").Range("AH3:AH600").Delete
Worksheets("Vergleich").Range("AN3:AN600").Delete
Worksheets("Vergleich").Range("AQ3:AQ600").Delete
Worksheets("Vergleich").Range("AT3:AT600").Delete
Worksheets("Vergleich").Range("AW3:AW600").Delete
Worksheets("Vergleich").Range("AZ3:AZ600").Delete
Worksheets("Vergleich").Range("BC3:BC600").Delete
Worksheets("Vergleich").Range("BF3:BF600").Delete
Worksheets("Vergleich").Range("BI3:BI600").Delete
Worksheets("Vergleich").Range("BO3:BO600").Delete
Worksheets("Vergleich").Range("BR3:BR600").Delete
Worksheets("Vergleich").Range("BU3:BU600").Delete
Worksheets("Vergleich").Range("BX3:BX600").Delete
Worksheets("Vergleich").Range("BZ3:BZ600").Delete
Worksheets("Vergleich").Range("CD3:CD600").Delete
' Tabelle1 Spalte A Suchen ersetzen " " durch ""
Worksheets("Summen2014").Range("A:A").Replace What:=" ", Replacement:=""
'Schleifen sortieren & zuordnen der Werte
Do While Z3 < Ende
   Konto3 = Worksheets("Summen2014").Range("A" & Z3).Value
       Do While Z4 < Ende2
        Konto4 = Worksheets("Vergleich").Range("A" & Z4 + 1).Value
        If Konto3 = Konto4 Then
            Daten2014 = Worksheets("Summen2014").Range("C" & Z3).Value
            Daten10172 = Worksheets("Summen2014").Range("E" & Z3).Value
            Daten10192 = Worksheets("Summen2014").Range("G" & Z3).Value
            Daten10202 = Worksheets("Summen2014").Range("I" & Z3).Value
            Daten10292 = Worksheets("Summen2014").Range("K" & Z3).Value
            Daten70202 = Worksheets("Summen2014").Range("M" & Z3).Value
            Daten70402 = Worksheets("Summen2014").Range("Q" & Z3).Value
            Daten70602 = Worksheets("Summen2014").Range("S" & Z3).Value
            Daten71002 = Worksheets("Summen2014").Range("U" & Z3).Value
            Daten71402 = Worksheets("Summen2014").Range("X" & Z3).Value
            Daten72202 = Worksheets("Summen2014").Range("Z" & Z3).Value
            Daten73052 = Worksheets("Summen2014").Range("AB" & Z3).Value
            Daten73802 = Worksheets("Summen2014").Range("AD" & Z3).Value
            Daten74002 = Worksheets("Summen2014").Range("AF" & Z3).Value
            Daten75002 = Worksheets("Summen2014").Range("AH" & Z3).Value
            Daten75202 = Worksheets("Summen2014").Range("AJ" & Z3).Value
            Daten77002 = Worksheets("Summen2014").Range("AL" & Z3).Value
            Daten77202 = Worksheets("Summen2014").Range("AN" & Z3).Value
            Daten77402 = Worksheets("Summen2014").Range("AP" & Z3).Value
            Daten78052 = Worksheets("Summen2014").Range("AR" & Z3).Value
            Daten78102 = Worksheets("Summen2014").Range("AT" & Z3).Value
            Daten78302 = Worksheets("Summen2014").Range("AV" & Z3).Value
            Daten78402 = Worksheets("Summen2014").Range("AX" & Z3).Value
            Daten78502 = Worksheets("Summen2014").Range("AZ" & Z3).Value
            Daten78602 = Worksheets("Summen2014").Range("BB" & Z3).Value
            Name2 = Worksheets("Summen2014").Range("B" & Z3).Value
                'If Z2 < 350 Then
                    'Daten2013 = Daten2014 * -1
                    'Daten1017 = Daten1017 * -1
                'End If
            Worksheets("Vergleich").Range("D" & Z4 + 1) = Daten2014
            Worksheets("Vergleich").Range("G" & Z4 + 1) = Daten10172
            Worksheets("Vergleich").Range("J" & Z4 + 1) = Daten10192
            Worksheets("Vergleich").Range("M" & Z4 + 1) = Daten10202
            Worksheets("Vergleich").Range("P" & Z4 + 1) = Daten10292
            Worksheets("Vergleich").Range("S" & Z4 + 1) = Daten70202
            Worksheets("Vergleich").Range("V" & Z4 + 1) = Daten70402
            Worksheets("Vergleich").Range("Y" & Z4 + 1) = Daten70602
            Worksheets("Vergleich").Range("AB" & Z4 + 1) = Daten71002
            Worksheets("Vergleich").Range("AE" & Z4 + 1) = Daten71402
            Worksheets("Vergleich").Range("AH" & Z4 + 1) = Daten72202
            Worksheets("Vergleich").Range("AN" & Z4 + 1) = Daten73052
            Worksheets("Vergleich").Range("AQ" & Z4 + 1) = Daten73802
            Worksheets("Vergleich").Range("AT" & Z4 + 1) = Daten74002
            Worksheets("Vergleich").Range("AW" & Z4 + 1) = Daten75002
            Worksheets("Vergleich").Range("AZ" & Z4 + 1) = Daten75202
            Worksheets("Vergleich").Range("BC" & Z4 + 1) = Daten77002
            Worksheets("Vergleich").Range("BF" & Z4 + 1) = Daten77202
            Worksheets("Vergleich").Range("BI" & Z4 + 1) = Daten77402
            Worksheets("Vergleich").Range("BO" & Z4 + 1) = Daten78052
            Worksheets("Vergleich").Range("BR" & Z4 + 1) = Daten78102
            Worksheets("Vergleich").Range("BU" & Z4 + 1) = Daten78302
            Worksheets("Vergleich").Range("BX" & Z4 + 1) = Daten78402
            Worksheets("Vergleich").Range("BZ" & Z4 + 1) = Daten78502
            Worksheets("Vergleich").Range("CD" & Z4 + 1) = Daten78602
            Worksheets("Vergleich").Range("B" & Z4 + 1) = " " & Name2
         End If
        Z4 = Z4 + 1
        Loop
    Z3 = Z3 + 1
    Z4 = 2
Loop
End Sub
Das erste Makro ist für die Daten aus 2013 und das Zweite für die vom Folgejahr.

Mein Problem: jedes Makro für sich selber funktioniert, aber wenn ich Makro 2 direkt nach Makro 1 laufen lasse, verschieben sich in dem Tabellenblatt drei ("Vergleich") die Werte vom Makro 1 in den Spalten.

Hat dafür jemand eine Lösung, oder einen Denkanstoß?

Vielen Dank im Voraus!

  

Betrifft: Weder - noch von: Frank
Geschrieben am: 17.09.2014 17:36:36

Hallo Sebastian,

der Betreff bezieht sich auf Deine abschliessende Frage.
Das Ganze lässt sich wohl nur beantworten, wenn Du eine Beispieldatei hochlädst. Hilfreich ist bei Code auch immer, wenn auskommentierte Zeilen gelöscht werden (der IF-Block in beiden Makros). Den Umweg über die Variablen (und deren Deklaration) kannst Du Dir übrigens sparen, indem Du die Zuweisung direkt machst

Worksheets("Vergleich").Range("CD" & Z4 + 1) = Worksheets("Summen2014").Range("BB" & Z3).Value
Grüsse,
Frank


  

Betrifft: AW: Weder - noch von: Adis
Geschrieben am: 17.09.2014 20:29:57

Hallo

höfliche Frage: Warum so aufwendig kopieren?
Man kann Tabellen direkt miteinander vergleichen.
Dazu muss man den Bereich wissen und die Kriterien
Beispiel Datei ware sehr hilfreich.

Gruss Adis