Tabellen vergleich und Übertrag der Daten

Bild

Betrifft: Tabellen vergleich und Übertrag der Daten von: Stefan
Geschrieben am: 01.03.2005 21:48:43

was soll gemacht werden, ich hoffe ich erkläre das richtig
also als erstes soll geprüft werden, ob, die nummern in der Spalte A der Tabelle 2 in Tabelle 1 vorhanden ist, wenn nicht, sollen die Einträge
der Spalten wie in der " Zuordnung wie folgt" eingetragen werden.
als nächstest soll aber auch geprüft werden, wenn die nummer bereits vorhanden, dann prüfe ob in den Spalten der Tabelle 2 positionen vorhanden sind
die in Tabelle 1 fehlen und trage diese nachträglich ein wenn nichts in der Spalte der Tabelle 1 steht.
ich hoffe ich habe dieses korrekt erklärt und bedanke mich schonmal im voraus für die arbeit
das problem welches ich dabei eigentlich habe ist, das die listen teilweise ca. 15000 zeilen haben die geprüft werden müssen
da in der tabelle 1 die nummer der spalte a nur einmal vorhanden sein darf


im anhang habe ich in der excel-file unter tabelle 3 einmal die genaue zuordnung notiert
https://www.herber.de/bbs/user/19055.xls

Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Josef Ehrensberger
Geschrieben am: 01.03.2005 23:27:00

Hallo Stefan! < -- das ist eine Anrede!

Probier mal.

https://www.herber.de/bbs/user/19060.xls


Gruß Sepp < -- das ist ein Gruß!

P.S.: Rückmeldung nicht vergessen!


Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Stefan
Geschrieben am: 02.03.2005 09:04:16

vielen dank nochmal, hat 100%ig gepasst, eine frage habe ich noch, wäre es ein großer aufwand die prüfung so zu verändern, das, wenn bereits ein text zb. in der tablle 1 der spalte D, E, G, L O und Q steht, dieser aber mit dem Text der Tabelle 2 nicht übereinstimmt, das makro den text der Tabelle 2 ( bzw. die Text ) in tabelle 1 in die spalte R schreibt??
Beisp.: Tabelle1 D=Meilensteine prüfen, E= Müller, G=SNR in der Tablle 2 würde stehen L=Abnehmer prüfen, M=Schmidt, E= LM das dann in der Spalte R der Tabelle die nicht übereinstimmenden Texte reinkommen ( Tabelle 1 Spalte R = Abnehmer prüfen, Schmidt, LM )

vielen dank nochmal


Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Josef Ehrensberger
Geschrieben am: 02.03.2005 14:13:47

Hallo Stefan!

Ersetze den Code im Modul durch diesen:


      
Option Explicit

Sub VergleichUndAktualisierung()
Dim rng As Range
Dim wsTab1 As Worksheet, wsTab2 As Worksheet
Dim lRow As Long, lNext As Long, iCol As Integer
Dim arCol() As Variant
Dim strTemp As String

'Array für den Spaltenvergleich
arCol = Array(1, 2, 3, 12, 13, , 5, 6, 7, 16, 11, 4, 8, 14, 15, 9, 10)
   
Set wsTab1 = Sheets("Tabelle1")
Set wsTab2 = Sheets("Tabelle2")

On Error GoTo ERRORHANDLER

With Application
.ScreenUpdating = 
False
.EnableEvents = 
False
.DisplayAlerts = 
False
.Calculation = xlCalculationManual
End With
'Spalte "A" in "Tabelle2" durchlaufen
   For lRow = 2 To wsTab2.Cells(65536, 1).End(xlUp).Row

      
If wsTab2.Cells(lRow, 2) <> "" Then
'Eintrag aus "Tabelle2" Ax in "Tabelle1" Spalte "A" suchen
      Set rng = wsTab1.Range("A:A").Find(What:=wsTab2.Cells(lRow, 1), _
         LookIn:=xlValues, LookAt:=xlWhole)
'Wenn gefunden, dann
         If Not rng Is Nothing Then
'Spalten durchlaufen
            For iCol = 2 To UBound(arCol) + 1
               
'Spalte "F" ausnehmen
               If iCol <> 6 Then
'Wenn kein Inhalt in Zelle, dann
                  If wsTab1.Cells(rng.Row, iCol) = "" Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
                  wsTab1.Cells(rng.Row, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
'Wenn Inhalt in Zelle, dann Inhalt der Spalten D, E, G, L O und Q mit den
'entsprechenden Spalten in "Tabelle2" vergleichen
                  ElseIf wsTab1.Cells(rng.Row, iCol) <> wsTab2.Cells(lRow, _
                           arCol(iCol - 1)) 
And wsTab2.Cells(lRow, arCol(iCol - 1)) _
                           <> 
"" Then
'bei unterschiedlichen Einträgen, Werte in String schreiben
                     Select Case iCol
                     
Case 4, 5, 7, 12, 15, 17
                     strTemp = strTemp & wsTab2.Cells(lRow, arCol(iCol - 1)) & 
", "
                     
Case Else
                     
End Select
                     
                  
End If
                  
               
End If
               
            
Next
'String in "Tabelle1" Spalte "R" schreiben
               If strTemp <> vbNullString Then
                  wsTab1.Cells(rng.Row, 18) = Left(strTemp, Len(strTemp) - 2)
                  strTemp = vbNullString
               
End If
               
'Wenn nicht gefunden, dann
         Else
'Erste freie Zeile ermitteln
         lNext = wsTab1.Cells(65536, 1).End(xlUp).Row + 1
            
            
For iCol = 1 To UBound(arCol) + 1
               
               
If iCol <> 6 Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
               wsTab1.Cells(lNext, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
                  
               
End If
               
            
Next
            
         
End If
         
      
End If

   
Next
   
ERRORHANDLER:

With Application
.ScreenUpdating = 
True
.EnableEvents = 
True
.DisplayAlerts = 
True
.Calculation = xlCalculationAutomatic
End With

End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0




Gruß Sepp


P.S.: Rückmeldung nicht vergessen!




Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Stefan
Geschrieben am: 03.03.2005 11:52:07

vielen lieben dank für die überarbeitung des makros. hat alles super funktioniert, nun kam aber noch die bitte, das die namen der tabelle2 die mit der tabelle 1 verglichen werden soll, folgendes noch passieren soll.

und zwar ganz einfach beschrieben, der name der tabelle2 ( beisp. von Müller ) soll in die spalte V eingetragen werden. also wenn die tabelle geprüft wird, soll bei den nummern die unter umständen bereits vorhanden ist zusätzlich noch der name der tabelle in spalte v der tabelle 1 eingetragen werden und zwar bei allen nummern der tabelle2.

ist das noch ein großer aufwand dieses in das makro einzufügen??????


Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Josef Ehrensberger
Geschrieben am: 03.03.2005 20:37:51

Hallo Stefan!

Meinst du so?



      
Option Explicit

Sub VergleichUndAktualisierung()
Dim rng As Range
Dim wsTab1 As Worksheet, wsTab2 As Worksheet
Dim lRow As Long, lNext As Long, iCol As Integer
Dim arCol() As Variant
Dim strTemp As String

'Array für den Spaltenvergleich
arCol = Array(1, 2, 3, 12, 13, , 5, 6, 7, 16, 11, 4, 8, 14, 15, 9, 10)
   
Set wsTab1 = Sheets("Tabelle1")
Set wsTab2 = Sheets("Tabelle2")

On Error GoTo ERRORHANDLER

With Application
.ScreenUpdating = 
False
.EnableEvents = 
False
.DisplayAlerts = 
False
.Calculation = xlCalculationManual
End With
'Spalte "A" in "Tabelle2" durchlaufen
   For lRow = 2 To wsTab2.Cells(65536, 1).End(xlUp).Row

      
If wsTab2.Cells(lRow, 2) <> "" Then
'Eintrag aus "Tabelle2" Ax in "Tabelle1" Spalte "A" suchen
      Set rng = wsTab1.Range("A:A").Find(What:=wsTab2.Cells(lRow, 1), _
         LookIn:=xlValues, LookAt:=xlWhole)
'Wenn gefunden, dann
         If Not rng Is Nothing Then
'Name in Spalte "V" eintragen
         wsTab1.Cells(rng.Row, 22) = wsTab2.Cells(lRow, 13)
'Spalten durchlaufen
            For iCol = 2 To UBound(arCol) + 1
               
'Spalte "F" ausnehmen
               If iCol <> 6 Then
'Wenn kein Inhalt in Zelle, dann
                  If wsTab1.Cells(rng.Row, iCol) = "" Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
                  wsTab1.Cells(rng.Row, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
'Wenn Inhalt in Zelle, dann Inhalt der Spalten D, E, G, L O und Q mit den
'entsprechenden Spalten in "Tabelle2" vergleichen
                  ElseIf wsTab1.Cells(rng.Row, iCol) <> wsTab2.Cells(lRow, _
                           arCol(iCol - 1)) 
And wsTab2.Cells(lRow, arCol(iCol - 1)) _
                           <> 
"" Then
'bei unterschiedlichen Einträgen, Werte in String schreiben
                     Select Case iCol
                     
Case 4, 5, 7, 12, 15, 17
                     strTemp = strTemp & wsTab2.Cells(lRow, arCol(iCol - 1)) & 
", "
                     
Case Else
                     
End Select
                     
                  
End If
                  
               
End If
               
            
Next
'String in "Tabelle1" Spalte "R" schreiben
               If strTemp <> vbNullString Then
                  wsTab1.Cells(rng.Row, 18) = Left(strTemp, Len(strTemp) - 2)
                  strTemp = vbNullString
               
End If
               
'Wenn nicht gefunden, dann
         Else
'Erste freie Zeile ermitteln
         lNext = wsTab1.Cells(65536, 1).End(xlUp).Row + 1
            
            
For iCol = 1 To UBound(arCol) + 1
               
               
If iCol <> 6 Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
               wsTab1.Cells(lNext, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
                  
               
End If
               
            
Next
            
         
End If
         
      
End If

   
Next
   
ERRORHANDLER:

With Application
.ScreenUpdating = 
True
.EnableEvents = 
True
.DisplayAlerts = 
True
.Calculation = xlCalculationAutomatic
End With

End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0






Gruß Sepp


P.S.: Rückmeldung nicht vergessen!




Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Stefan
Geschrieben am: 04.03.2005 07:05:26

ich habe das makro gerade leider erst ausprobieren können.
aber irgendwie passiert durch den eintrag

'Name in Spalte "V" eintragen
wsTab1.Cells(rng.Row, 22) = wsTab2.Cells(lRow, 13)

nicht wirklich etwas ersichtliches

in die Spalte V der Tabelle 1 sollte wenn möglich der Name der zu vergleichenden Tabelle stehen.

Wenn die zu prüfende Tabelle, als Beispiel nicht Tabelle2 heißt sondern Test2 soll Test2 in die Spalte V der tabelle1 eingetragen werden und zwar bei allen nummern die in der zu prüfenden Tabelle2 vorhanden sind. ( beisp. Tabelle1 hat bereits folgende nummern 1, 2, 3, die tabelle2 hat die nummern 1, 3, 4, dann soll in der tabelle1 bei den nummern 1, 3, 4 in spalte V der name der tabelle2. wenn bereits ein name vorhanden sein sollte, muss der name der neuen tabelle dazu ergänzt werden. ( also wenn ich dann eine tabelle3 prüfe und in dieser dann die nummern 3,6,7 enthalten sind, muss in der tabelle 1 unter der nummer 3 in der spalte v ( "tabelle2", "tabelle3" ( namen der tabellen sind verschieden )) stehen.

danke schon mal


Bild


Betrifft: AW: Tabellen vergleich und Übertrag der Daten von: Josef Ehrensberger
Geschrieben am: 04.03.2005 15:46:37

Hallo Stefan!

Da hab ich dich falsch verstanden!



      
Option Explicit

Sub VergleichUndAktualisierung()
Dim rng As Range
Dim wsTab1 As Worksheet, wsTab2 As Worksheet
Dim lRow As Long, lNext As Long, iCol As Integer
Dim arCol() As Variant
Dim strTemp As String

'Array für den Spaltenvergleich
arCol = Array(1, 2, 3, 12, 13, , 5, 6, 7, 16, 11, 4, 8, 14, 15, 9, 10)
   
Set wsTab1 = Sheets("Tabelle1")
Set wsTab2 = Sheets("Tabelle2")

On Error GoTo ERRORHANDLER

With Application
.ScreenUpdating = 
False
.EnableEvents = 
False
.DisplayAlerts = 
False
.Calculation = xlCalculationManual
End With
'Spalte "A" in "Tabelle2" durchlaufen
   For lRow = 2 To wsTab2.Cells(65536, 1).End(xlUp).Row

      
If wsTab2.Cells(lRow, 2) <> "" Then
'Eintrag aus "Tabelle2" Ax in "Tabelle1" Spalte "A" suchen
      Set rng = wsTab1.Range("A:A").Find(What:=wsTab2.Cells(lRow, 1), _
         LookIn:=xlValues, LookAt:=xlWhole)
'Wenn gefunden, dann
         If Not rng Is Nothing Then
'Tabellenname in Spalte "V" eintragen
         wsTab1.Cells(rng.Row, 22) = IIf(wsTab1.Cells(rng.Row, 22) <> "", _
               wsTab1.Cells(rng.Row, 22) & 
", " & wsTab2.Name, wsTab2.Name)
'Spalten durchlaufen
            For iCol = 2 To UBound(arCol) + 1
               
'Spalte "F" ausnehmen
               If iCol <> 6 Then
'Wenn kein Inhalt in Zelle, dann
                  If wsTab1.Cells(rng.Row, iCol) = "" Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
                  wsTab1.Cells(rng.Row, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
'Wenn Inhalt in Zelle, dann Inhalt der Spalten D, E, G, L O und Q mit den
'entsprechenden Spalten in "Tabelle2" vergleichen
                  ElseIf wsTab1.Cells(rng.Row, iCol) <> wsTab2.Cells(lRow, _
                           arCol(iCol - 1)) 
And wsTab2.Cells(lRow, arCol(iCol - 1)) _
                           <> 
"" Then
'bei unterschiedlichen Einträgen, Werte in String schreiben
                     Select Case iCol
                     
Case 4, 5, 7, 12, 15, 17
                     strTemp = strTemp & wsTab2.Cells(lRow, arCol(iCol - 1)) & 
", "
                     
Case Else
                     
End Select
                     
                  
End If
                  
               
End If
               
            
Next
'String in "Tabelle1" Spalte "R" schreiben
               If strTemp <> vbNullString Then
                  wsTab1.Cells(rng.Row, 18) = Left(strTemp, Len(strTemp) - 2)
                  strTemp = vbNullString
               
End If
               
'Wenn nicht gefunden, dann
         Else
'Erste freie Zeile ermitteln
         lNext = wsTab1.Cells(65536, 1).End(xlUp).Row + 1
            
            
For iCol = 1 To UBound(arCol) + 1
               
               
If iCol <> 6 Then
'Eintrag der zugeordneten Spalte aus "Tabelle2" eintragen
               wsTab1.Cells(lNext, iCol) = wsTab2.Cells(lRow, arCol(iCol - 1))
                  
               
End If
               
            
Next
            
         
End If
         
      
End If

   
Next
   
ERRORHANDLER:

With Application
.ScreenUpdating = 
True
.EnableEvents = 
True
.DisplayAlerts = 
True
.Calculation = xlCalculationAutomatic
End With

End Sub 


     Code eingefügt mit Syntaxhighlighter 3.0






Gruß Sepp


P.S.: Rückmeldung nicht vergessen!




 Bild

Beiträge aus den Excel-Beispielen zum Thema "Tabellen vergleich und Übertrag der Daten "