Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellen vergleichen

Tabellen vergleichen
26.02.2008 12:18:43
Manfred
Hallo zusammen,
ich habe hier im Forum diesen kleinen CODE gefunden, er läuft zwar, nun komme ich aber nicht weiter. Hunderte von vergleichen von Tabellen, aber keiner passt so richtig zum umbauen. Ich hoffe hier gibt es Hilfe.
https://www.herber.de/bbs/user/50192.xls
In Zeile 1 von Tab1 und Tab2 stehen die Überschriften.
In Tab1 und Tab2, in Sp.A stehen laufende Nummern, in Sp.B stehen die Personalnummern; in Sp.C die Namen
Er vergleicht Tab1, SpB mit Tab2, SpB , bei Gleichheit überträgt er die Namen aus Tab1, SpC nach Tab2, SpC.
Ist ein Name bei Gleichheit nach Tab2, SpC übertragen worden, darf dieser beim nächsten Lauf nicht wieder überschrieben od. mit einer leeren Zelle ersetzt werden. Tab1 ändert sich wöchentlich dann werden nur noch Personalnummern und Punkte in unbekannter Reihenfolge eingegeben.
Mein Problem.
Kann man den CODE so umbauen daß er die Namen in den nächsten Läufen in Tab2, SpC nicht überschreibt od. durch eine leere Zelle ersetzt ?
Kann man den CODE so umbauen das ich auch Spalte D separat übertragen kann ?
Dh. Er vergleicht Tab1, SpB mit Tab2, SpB , bei Gleichheit überträgt es die PUNKTE aus Tab1, SpD nach Tab2, SpD.

Sub Namen_mit_Pnr_Vergl_und_Uebernehmen()
Dim vntX, vntY, lngX As Long, lngY As Long, intCol As Integer
vntX = Sheets("Tabelle2").Range("a1").CurrentRegion
vntY = Sheets("Tabelle1").Range("a1").CurrentRegion
For lngX = 2 To UBound(vntX, 1)
For lngY = 2 To UBound(vntY, 1)
If vntX(lngX, 2) = vntY(lngY, 2) Then 	'vergleicht Tab1, Sp.B mit Tab2, Sp.B
For intCol = 3 To 3	‘war von Spalte 3 – 13 eingestelt
vntX(lngX, intCol) = vntY(lngY, intCol) ’ Laufzeitfehler 9, wenn ich For  _
intCol = 4 To 4 eingebe, also nach Tab2 Sp.D übertrage            Next
End If
Next lngY
Next lngX
Sheets("Tabelle2").Range("a1").CurrentRegion = vntX
End Sub


Mit freundlichen Grüßen
Manfred

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellen vergleichen
26.02.2008 13:25:35
Fred
Hallo,
nicht genau was du suchst, aber als Anregung.
Benötigst 4 Tabellen Start Tab1, Tab2 und Daten.
Start ist die Tabelle mit Startbutton
Natürlich Pfad und Mappen-Name anpassen.
Fred
'********************************************************************
'* Daten in jeweils einer Spalte von zwei Tabelen *
'* vergleichen und doppelte Datensätze löschen? Werte, die in der *
'* ersten Tabelle einmal und in der zweiten nicht vorkommen, sollen *
'* letztendlich in der ersten einmal stehenbleiben. *
'********************************************************************
'***************************
'* hier beginnt Abgleich *
'***************************

Sub DoppelteRaus()
Dim shBlatt1 As Worksheet, shBlatt2 As Worksheet
Dim rngTarget As Range
Dim intRow As Integer
Dim SpR1 As Integer
Dim SpR2 As Integer
Set shBlatt1 = Worksheets("Tab1")
Set shBlatt2 = Worksheets("Tab2")
Application.ScreenUpdating = False
On Error GoTo weiter
'**SpR1 ist Spalte in Tab1 ************
SpR1 = InputBox("Hier die eindeutige Spalte für TAB1 wählen." & _
(Chr(13)) & "Spalten-Nummer eingenen. z.B [1] ist Spalte [A] ", "lösche doppelte Einträge (c)   _
_
Fred Redlich", 1, 2500, 5000)
'**SpR2 ist Spalte in Tab2 ************
SpR2 = InputBox("Hier die eindeutige Spalte für TAB2 wählen." & _
(Chr(13)) & "Spalten-Nummer eingenen. z.B [1] ist Spalte [A]", "lösche doppelte Einträge (c)   _
_
Fred Redlich", 1, 2500, 5000)
On Error Resume Next
'****hier beginnt suchen und löschen*********
intRow = 2
Do Until IsEmpty(shBlatt1.Cells(intRow, 1))
Set rngTarget = shBlatt2.Columns(SpR2).Find(shBlatt1.Cells(intRow, SpR1))
If Not rngTarget Is Nothing Then
shBlatt1.Rows(intRow).Delete
shBlatt2.Rows(rngTarget.Row).Delete
intRow = intRow - 1
End If
intRow = intRow + 1
Loop
'*********** Abgleich bendet*************
'#Übergabe#
'**Tab1 nach Daten kopieren*****
Sheets("Start").Select
Mel1 = MsgBox("hier können beide Tabellen in eine neue" & (Chr(13) & _
"Tabelle als summen [Daten] erstellt werden"), vbYesNo, "TAB1 und TAB2 verbinden  (c) Fred  _
Redlich")
If Mel1 = 7 Then GoTo weiter:
If Mel1 = 6 Then
Sheets("Daten").Select
Cells().Clear
Sheets("Tab1").Select
Cells.Select: Selection.Copy
Sheets("Daten").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
'**Tab2 nach Daten kopieren***
Sheets("Tab2").Select: Range("A2:IV32000").Select: Selection.Copy
Sheets("Daten").Select
'**Tab2 an letzte freie Zeile in Daten anhängen***
'**letzte beschriebene Zeile finden
'**bezogen auf eine bestimmte Spalte:
SP = 1 ' Spalte
LR = ActiveSheet.Cells(Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
LR = LR + 1
Range("A" & LR).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
End If
ActiveWorkbook.Save
Sheets("Start").Select
Mel2 = MsgBox("Die [Summen-Datei] als eigenständige Datei" & (Chr(13) & _
"abstellen Name = [Datei]"), vbInformation, "Neue Datei erstellen  (c) Fred Redlich")
Workbooks.Open ("C:\Eigene Dateien\Daten_FirstX_LZR\Daten.xls")
Windows("TAB-ABGLEICH.xls").Activate
Sheets("Daten").Select
Cells.Select:  Selection.Copy
Windows("Daten.xls").Activate
Range("A1").Select:    ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Range("A1").Select
ActiveWorkbook.Save: ActiveWorkbook.Close
Sheets("Start").Select
weiter:
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Tabellen vergleichen
26.02.2008 14:45:52
Manfred
Hallo Fred,
o, oh, mein VBA ist glaub nicht so gut daß ich das umstellen könnte.
Hast Du noch eine andere Lösung ?
Gruß Manfred

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige