Spalten vergleichen und Abweichungen in einer Spalte eintragen
#1
Hallo,

ich habe eine Tabelle "Matrix_alt" mit einer Spalte, in der Werte stehen. Nun sollen diese mit Werten einer anderem Tabelle"Snapshot" im selben Arbeitsblatt abgeglichen werden. Falls in "Snapshot" abweichende Werte vorhanden sind, sollen diese in "Matrix_alt" ergänzt und markiert werden.

Ich habe mir folgenden Code zusammengesucht, der dies auch schon weitestgehend umsetzt:


Code:
Sub Vergleich_alt_zu_neu()
   Dim wsSource As Worksheet
   Dim wsSAA As Worksheet
   Dim rng As Range
   Dim lngZeileSource As Long
   Dim lngZeileSAA As Long
   
   Set wsSource = Worksheets("Snapshot")
   Set wsSAA = Worksheets("Matrix_alt")
   
   lngZeileSAA = wsSAA.Cells(Rows.Count, 1).End(xlUp).Row
   lngZeileSource = 2
   Do Until IsEmpty(wsSource.Cells(lngZeileSource, 1))
       Set rng = wsSAA.Columns(1).Find(What:=wsSource.Cells(lngZeileSource, 1).Value, LookAt:=xlWhole)
       If rng Is Nothing Then
           lngZeileSAA = lngZeileSAA + 1
           With wsSAA.Cells(lngZeileSAA, 1)
               .Value = wsSource.Cells(lngZeileSource, 1).Value
               .Interior.Color = 255
           End With
       End If
       lngZeileSource = lngZeileSource + 1
   Loop
   End Sub


Allerdings nur für eine Spalte der Tabelle "Snapshot".

Was muss ich ändern, damit dies mit allen dort vorhandenen Spalten passiert?

Vielen Dank schonmal.
Top
#2
Hola,

verlinkst du bitte deine Beiträge in den verschiedenen Foren untereinander?
Danke.

Gruß,
steve1da
Top
#3
Hallo,

das Thema habe ich auch hier eingestellt. [url=http://www.ms-office-forum.net/forum/showthread.php?p=1796644#post1796644][/url]
Top
#4
Hallöchen,

DU könntest um die Do-Schleife eine For-Schleife mit den Spaltennummern schreiben.

z.B.
'Schleife über C bis E
Code:
For iCnt = 3 to 5
Do ...
...
Loop
Next

Bei der Zelladressierung verwendest Du an mehreren Stellen die Spaltennummer 1. Die ersetzt Du durch iCnt. Die Schleife muss dann natürlich auch mit 1 beginnen Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • grabax
Top
#5
Danke schauan,

ich kopiere Daten manuell in die Tabelle und die Anzahl der Spalten ist variabel. Wie müsste der Code dazu aussehen?

(Eine Lösung, die jeweils die 1. Spalte jeder Exceldatei in einem bestimmten Verzeichnis automatisch in dieTabelle kopiert, wäre das absolute Sahnehäubchen).
Top
#6
Hallöchen,

ich bleibe erst mal nur bei den Spalten. Da tust Du in einer Schleife bei der ersten freien Spalte beginnen und schlimmstenfalls bei der letzten aufhören.
Code:
For icnt = cells(1, columns.count).end(xltoleft).column+1 To Columns.count
...
Next
Die Schleife könntest Du verlassen, wenn es keine neue Datei mehr gibt. Das wäre eventuell was, wenn Du eine Liste der Dateien hast.

Mit Do ... Loop geht das auch über eine unbekannte Anzahl aller Excel-Dateien hier in einem Verzeichnis, im Prinzip so:

Code:
Filename = Dir ("C:\Test\*.xlsx")
icnt = cells(1, columns.count).end(xltoleft).column
Do While Filename <>""
'Schleifenzaehler hochsetzen
icnt=icnt+1
'Mach was mit der Datei
...
'naechste Datei
Filename = Dir()
Loop
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Hallo,

ich komme aktuell noch nicht dazu deine Tipps zu testen, aber ich denke, so sollte es klappen.

Vielen Dank!
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste