Anzeige
Archiv - Navigation
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
576to580
576to580
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellen vergleich und Übertrag der Daten

Tabellen vergleich und Übertrag der Daten
01.03.2005 21:48:43
Stefan
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

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen vergleich und Übertrag der Daten
01.03.2005 23:27:00
Josef
Hallo Stefan! &lt -- das ist eine Anrede!
Probier mal.
https://www.herber.de/bbs/user/19060.xls
Gruß Sepp &lt -- das ist ein Gruß!
P.S.: Rückmeldung nicht vergessen!
AW: Tabellen vergleich und Übertrag der Daten
02.03.2005 09:04:16
Stefan
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
Anzeige
AW: Tabellen vergleich und Übertrag der Daten
02.03.2005 14:13:47
Josef
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 
Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: Tabellen vergleich und Übertrag der Daten
03.03.2005 11:52:07
Stefan
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?
Anzeige
AW: Tabellen vergleich und Übertrag der Daten
03.03.2005 20:37:51
Josef
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 
Anzeige
AW: Tabellen vergleich und Übertrag der Daten
04.03.2005 07:05:26
Stefan
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
Anzeige
AW: Tabellen vergleich und Übertrag der Daten
04.03.2005 15:46:37
Josef
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 
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige