Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antworten Top
#2
Hola,

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

Gruß,
steve1da
Antworten Top
#3
Hallo,

das Thema habe ich auch hier eingestellt. [url=http://www.ms-office-forum.net/forum/showthread.php?p=1796644#post1796644][/url]
Antworten 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
Antworten 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).
Antworten 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)
Antworten Top
#7
Hallo,

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

Vielen Dank!
Antworten Top


Gehe zu:


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