Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
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
Inhaltsverzeichnis

Vergleich kopieren Makro

Vergleich kopieren Makro
10.02.2009 10:48:00
Weis
Hallo Excelfreunde,
heute wende ich mich mit einem etwas Komplizierteren Problem an Euch. Für mich ist aufgrund meiner sehr bescheidenen VBA-Kenntnisse nicht lösbar. Um jede Hilfe und Anregungen von Euch wäre ich also sehr dankbar. Aus diesem Grund habe ich auch meine Datei hochgeladen.
https://www.herber.de/bbs/user/59293.zip
Ich bräuchte zwei Module, deren Funktionen ich im Folgenden vorstellen möchte:
In der von mir hochgeladenen Datei gibt es Ziel- und Quelltabellen die ich abwechselnd miteinander vergleichen möchte
Durch die Eingabe eines Passwortes in der Übersichtstabelle kann man eine seine Arbeitstabelle gelangen.
Um alle gleichzeitig zu öffnen, verwendet man das Passwort "Master"
Um die Vollansicht zu schließen, gebt ihr bitte "admin" ein. Dann könnt Ihr alles sehen.
Zunächst das Modul 1: (Tabelle Team B bis Team G)
Hier habe ich schon ein Makro mit Eurer Hilfe entwickelt, was ich allerdings noch ein wenig verfeinern möchte.
Leider kopiert diese Makro die Werte in die richtige Zieltabelle in Abhängigkeit von dem Werten in der Spalte A. Ich möchte aber, dass das Makro dies nur einmal macht. Somit soll das Makro in den Zieltabellen zunächst schauen, ob die Zeile schon vorhanden ist (schon kopiert wurde). Wenn dies der Fall ist, dann soll das Makro zur nächsten Zeile der Quelltabelle gehen und diesen Wert kopieren. Dies soll solange fortgeführt werden, bis kein Wert mehr in der Spalte A vorhanden ist.
und das Modul 2: (Tabellen VAB1 bis VAB9)
Beginnend in A6 der aktiven Tabelle soll das Makro den Wert aus I6 der aktiven Tabelle
in die Zieltabelle kopieren, wenn der Wert der Zelle C6 mit den Wert aus der Vergleichstabelle
übereinstimmt. Danach soll das Makro zum nächsten Wert (also C7 überprüfen) in der Tabelle gehen. Sofern in der Zelle I6 nichts steht, dann soll das Makro nichts kopieren, bzw. zur nächsten Zeile gehen
Dies soll so lange geschehen, bis keine Werte mehr in der aktiven Tabelle (Spalte C) mehr vorhanden ist.
https://www.herber.de/bbs/user/59293.zip
Ich wäre Euch für Eure Hilfe sehr dankbar.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich kopieren Makro
12.02.2009 11:55:00
fcs
Hallo Weis,
hier deine Prozeduren entsprechend angepasst. Hoffe das Passt, habe nur mit wenigen Daten getestet.
Gruß
Franz

Sub anKB()
Dim wks As Worksheet
'Application.SreenUpdating = False
Dim iRow As Integer, iRowL As Integer, iRowT As Integer
Dim rngBereich As Range, rngGefunden As Range, bolVorhanden As Boolean, lngSp As Long
Dim strAdresse1 As String, varSuchen
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 1 To iRowL
Set wks = Nothing
If InStr(Cells(iRow, 2).Value, "B") Then Set wks = Worksheets("TeamB")
If InStr(Cells(iRow, 2).Value, "C") Then Set wks = Worksheets("TeamC")
If InStr(Cells(iRow, 2).Value, "D") Then Set wks = Worksheets("TeamD")
If InStr(Cells(iRow, 2).Value, "E") Then Set wks = Worksheets("TeamE")
If InStr(Cells(iRow, 2).Value, "F") Then Set wks = Worksheets("TeamF")
If InStr(Cells(iRow, 2).Value, "G") Then Set wks = Worksheets("TeamG")
'... entsprechend fortsetzen
If Not wks Is Nothing Then
If Not IsEmpty(Cells(iRow, 9)) Then 'Prüfen ob Wert in Spalte I eingetragen
iRowT = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
Set rngBereich = wks.Range(wks.Cells(6, 3), wks.Cells(iRowT, 3)) 'Bereich mit  _
Nummern
varSuchen = Cells(iRow, 3).Value 'Nr der Aufgabe aus Quelle
Set rngGefunden = rngBereich.Find(what:=varSuchen, LookIn:=xlValues, lookat:= _
xlWhole)
If rngGefunden Is Nothing Then
bolVorhanden = False
Else
'1. Fundstelle merken
strAdresse1 = rngGefunden.Address
'Übereinstimmung des Datensatzes prüfen, ggf. Nummer nochmals suchen
Do
'Spaltenvergleich
bolVorhanden = False
For lngSp = 1 To 9 'Spalten A bis I vergleichen
Select Case lngSp
Case 1, 2, 3, 4, 5  '### ggf. anpassen
'Diese Spalten sollen verglichen werden, identifizieren einen Eintrag  _
eindeutig
If Cells(iRow, lngSp).Value = wks.Cells(rngGefunden.Row, lngSp).Value  _
Then
bolVorhanden = True
Else
bolVorhanden = False
Exit For
End If
Case Else
'diese Spalten sollen nicht mit verglichen werden
End Select
Next
If bolVorhanden = True Then Exit Do
Set rngGefunden = rngBereich.FindNext(After:=rngGefunden)
Loop Until rngGefunden.Address = strAdresse1
End If
If bolVorhanden = False Then
MsgBox "Für den Eintrag in Zeile """ & iRow & """ gibt fehlt Zeile im Zielblatt!" _
Else
Cells(iRow, 9).Copy wks.Cells(rngGefunden.Row, 9)
wks.Columns(9).AutoFit
End If
End If
End If
Next iRow
Application.CutCopyMode = False
MsgBox "Ergebnisse an den KB gesendet!"
'Application.ScreenUpdating = True
End Sub
Sub anVAB()
Dim wks As Worksheet
'Application.SreenUpdating = False
Dim iRow As Long, iRowL As Long, iRowT As Long
Dim rngBereich As Range, rngGefunden As Range, bolVorhanden As Boolean, lngSp As Long
Dim strAdresse1 As String, varSuchen
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 6 To iRowL  'Ab Zeile 6 die Daten Vergleichen und ggf. kopieren
Set wks = Nothing
If InStr(Cells(iRow, 1).Value, "1") Then Set wks = Worksheets("VAB1")
If InStr(Cells(iRow, 1).Value, "2") Then Set wks = Worksheets("VAB2")
If InStr(Cells(iRow, 1).Value, "3") Then Set wks = Worksheets("VAB3")
If InStr(Cells(iRow, 1).Value, "4") Then Set wks = Worksheets("VAB4")
If InStr(Cells(iRow, 1).Value, "5") Then Set wks = Worksheets("VAB5")
If InStr(Cells(iRow, 1).Value, "6") Then Set wks = Worksheets("VAB6")
If InStr(Cells(iRow, 1).Value, "7") Then Set wks = Worksheets("VAB7")
If InStr(Cells(iRow, 1).Value, "8") Then Set wks = Worksheets("VAB8")
If InStr(Cells(iRow, 1).Value, "9") Then Set wks = Worksheets("VAB9")
'... entsprechend fortsetzen
If Not wks Is Nothing Then
iRowT = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
Set rngBereich = wks.Range(wks.Cells(6, 3), wks.Cells(iRowT, 3)) 'Bereich mit Nummern
varSuchen = Cells(iRow, 3).Value 'suchende Nummer aus Quelle
Set rngGefunden = rngBereich.Find(what:=varSuchen, LookIn:=xlValues, lookat:=xlWhole)
If rngGefunden Is Nothing Then
bolVorhanden = True
Else
'1. Fundstelle merken
strAdresse1 = rngGefunden.Address
'Übereinstimmung des Datensatzes prüfen, ggf. Nummer nochmals suchen
Do
'Spaltenvergleich
bolVorhanden = False
For lngSp = 1 To 9 'Spalten A bis I vergleichen
Select Case lngSp
Case 1, 2, 3, 4, 5
'Diese Spalten sollen verglichen werden, identifizieren einen Eintrag  _
eindeutig
If Cells(iRow, lngSp).Value = wks.Cells(rngGefunden.Row, lngSp).Value Then
bolVorhanden = True
Else
bolVorhanden = False
Exit For
End If
Case Else
'diese Spalten sollen nicht mit verglichen werden
End Select
Next
If bolVorhanden = True Then Exit Do
Set rngGefunden = rngBereich.FindNext(After:=rngGefunden)
Loop Until rngGefunden.Address = strAdresse1
End If
If bolVorhanden = False Then
Rows(iRow).Copy wks.Rows(iRowT)
wks.Columns.AutoFit
End If
End If
Next iRow
Application.CutCopyMode = False
MsgBox "Daten an den VAB gesendet!"
'Application.ScreenUpdating = True
End Sub


Anzeige
AW: Vergleich kopieren Makro
12.02.2009 18:19:00
Weis
Hi Franz,
vielen Dank. Ich werde das heute abend mal ausprobieren. Dann bin ich von der Arbeit zurück.
Soweit ich deine Lösung nachvollziehen konnte (was sich in Grenzen hält), bin ich sehr beindruckt.
Ich möchte mich hier für deine Mühen bedanken.
Grüße
Weis
AW: Vergleich kopieren Makro
13.02.2009 18:23:00
Weis
Hallo Franz,
ich hab gerade mal die beiden Makro ausprobiert.
Das erste Makro "an KB" funktioniert vorzüglich. Das ist genau das, was ich mir "gewünscht" hatte.
Nochmal ein großes Dankeschön. Das hat mir wirklich sehr weitergeholfen.
Das andere Makro "anVAB" funktioniert irgendwie nicht ganz so wie erwünscht. In den Zieltabellen wird nichts eingetragen.
Kannst Du Dir das vielleicht nochmal ansehen? Ich kann leider den Fehler nicht finden.
Bedanke mich bei dir bereits im Voraus...
PS: Deswegen habe ich die Frage nochmal auf "offen" gesetzt.
Danke
Weis
Anzeige
AW: Vergleich kopieren Makro
16.02.2009 13:19:00
fcs
Hallo Weis,
einmal True an der falschen Stelle :-(
Gruß
Franz

Sub anVAB()
Dim wks As Worksheet
'Application.SreenUpdating = False
Dim iRow As Long, iRowL As Long, iRowT As Long
Dim rngBereich As Range, rngGefunden As Range, bolVorhanden As Boolean, lngSp As Long
Dim strAdresse1 As String, varSuchen
iRowL = Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 6 To iRowL  'Ab Zeile 6 die Daten Vergleichen und ggf. kopieren
Set wks = Nothing
If InStr(Cells(iRow, 1).Value, "1") Then Set wks = Worksheets("VAB1")
If InStr(Cells(iRow, 1).Value, "2") Then Set wks = Worksheets("VAB2")
If InStr(Cells(iRow, 1).Value, "3") Then Set wks = Worksheets("VAB3")
If InStr(Cells(iRow, 1).Value, "4") Then Set wks = Worksheets("VAB4")
If InStr(Cells(iRow, 1).Value, "5") Then Set wks = Worksheets("VAB5")
If InStr(Cells(iRow, 1).Value, "6") Then Set wks = Worksheets("VAB6")
If InStr(Cells(iRow, 1).Value, "7") Then Set wks = Worksheets("VAB7")
If InStr(Cells(iRow, 1).Value, "8") Then Set wks = Worksheets("VAB8")
If InStr(Cells(iRow, 1).Value, "9") Then Set wks = Worksheets("VAB9")
'... entsprechend fortsetzen
If Not wks Is Nothing Then
iRowT = wks.Cells(Rows.Count, 1).End(xlUp).Row + 1
Set rngBereich = wks.Range(wks.Cells(6, 3), wks.Cells(iRowT, 3)) 'Bereich mit  _
Nummern
varSuchen = Cells(iRow, 3).Value 'suchende Nummer aus Quelle
Set rngGefunden = rngBereich.Find(what:=varSuchen, LookIn:=xlValues, lookat:=xlWhole) _
If rngGefunden Is Nothing Then
             bolVorhanden = False   '### Korrektur 2009-02-16
Else
'1. Fundstelle merken
strAdresse1 = rngGefunden.Address
'Übereinstimmung des Datensatzes prüfen, ggf. Nummer nochmals suchen
Do
'Spaltenvergleich
bolVorhanden = False
For lngSp = 1 To 9 'Spalten A bis I vergleichen
Select Case lngSp
Case 1, 2, 3, 4, 5
'Diese Spalten sollen verglichen werden, identifizieren einen Eintrag eindeutig
If Cells(iRow, lngSp).Value = wks.Cells(rngGefunden.Row, lngSp).Value Then
bolVorhanden = True
Else
bolVorhanden = False
Exit For
End If
Case Else
'diese Spalten sollen nicht mit verglichen werden
End Select
Next
If bolVorhanden = True Then Exit Do
Set rngGefunden = rngBereich.FindNext(After:=rngGefunden)
Loop Until rngGefunden.Address = strAdresse1
End If
If bolVorhanden = False Then
Rows(iRow).Copy wks.Rows(iRowT)
wks.Columns.AutoFit
End If
End If
Next iRow
Application.CutCopyMode = False
MsgBox "Daten an den VAB gesendet!"
'Application.ScreenUpdating = True
End Sub


Anzeige
AW: Vergleich kopieren Makro
16.02.2009 15:31:00
Weis
Hallo Franz,
ich habe das gerade mal ausprobiert.
Vielen Dank. Alles funktioniert sensationell schnell und perfekt.
Einfach klasse.
Danke,
Weis

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige