Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

vergleichen_aktualisieren

vergleichen_aktualisieren
22.11.2019 11:13:07
Alex
Hallo zusammen,
ich bin hier ein Neuling, brauche dringen Hilfe, versuche die Anfrage nochmal zu machen.
Ich möchte gerne zwei Tabellen aus einer Mappe vergleichen und die Daten aktualisieren.
Es soll so laufen:
(Beispiel Tabelle unter https://www.herbert.de/bbs/user/133325.xlsm zu finden ist),
Die Zellen aus Spalte A Blatt "Neu" mit den Zellen Spalte A Blatt "Alt" vergleichen und
bei Übereinstimmung die Zeilen aus dem Blatt "Alt" in das Blatt "Neu" übernehmen,
wenn möglich auch mit der Formatierung aus dem Blatt "Alt".
Ich habe schon einige Varianten ausprobiert (im Forum gefunden), sie haben teilweise sogar einmal funktioniert, aber nur einmal. Leider konnte ich nicht rausfinden, wo es hakt.
Ein Code habe ich in der Bsp. Tabelle dabei gelassen.
Ich hoffe jemand kann mir da helfen.
Danke im Voraus.
Alex

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
hast du schon mal....
22.11.2019 15:06:41
Werner
Hallo Alex,
...auf deinen Link geklickt?
Gruß Werner
AW: hast du schon mal....
23.11.2019 12:20:07
Alex
Man, was mache ich falsch?
Wie komme ich jetzt zu meiner Datei 133325.also?
AW: hast du schon mal....
23.11.2019 21:23:40
Alex
Hallo Werner,
ich habe jetzt mein Fehler in der Verknüpfung entdeckt, es ist www.herber.de/bbs/user/133325.xlsm
Hier ist die Code die ich versucht habe anzuwenden:
Sub SuchenErsetzen()
Dim var As Variant
Dim lRow As Long
Dim iWks As Integer
For iWks = 2 To Worksheets.Count
With Worksheets(iWks).Range("A2").CurrentRegion
For lRow = 1 To .Rows.Count
var = Application.Match(.Cells(lRow, 1), Columns(1), 0)
If Not IsError(var) Then
Range(Cells(var, 1), Cells(var, 9)).Value = _
.Range(.Cells(lRow, 1), .Cells(lRow, 9)).Value
End If
Next lRow
End With
Next iWks
End Sub
Ich haffe du kannst mir helfen.
Danke und Gruß
Alex
Anzeige
AW: hast du schon mal....
24.11.2019 11:39:37
Werner
Hallo Alex,
Frage: Sind sowohl in Blatt Alt als auch in Blatt Neu die enstprechenden RMNr jeweils nur einfach vorhanden oder kann es auch sein, dass die Nummern doppelt vorhanden sind?
Gruß Werner
AW: hast du schon mal....
24.11.2019 22:24:18
Alex
Hallo Werner,
ich versuche es zu erklären:
die Liste Neu zeigt aktuelle Positionen in Bearbeitung und die Liste Alt zeigt der Stand aus dem Vortag.
Aus dem Grund sind in beiden Listen Setze mit gleicher RMNr vorhanden, nur in der Liste Alt sind die Bemerkungen und Formatierungen (haben bestimmte Bedeutung) vorhanden, die in die Liste Neu sollen übernommen werden. Es fehlen die erledigten Positionen aus der Liste Alt in der Liste Neu und es sind paar neue Positionen in der Liste Neu dazugekommen. Das Ganze ist nur ein Teil von dem Projekt was ich mir vorgenommen habe.
Ich möchte eigentlich folgendes erreichen. Vor dem Vergleich soll noch etwas durchlaufen.
Liste Alt wird 1zu1 in ein Blatt mit Vortagsdatum als Name einer Archiv Tabelle kopiert.
Inhalt Liste Neu wird in die Liste Alt kopiert und mit neuen Daten aus einer aktualisierter Liste ersetzt. Und erst dann sollen die Listen verglichen werden. Das mache ich teilweise noch händisch.
Da werde ich vielleicht noch weitere Fragen stellen wenn ich selbst nicht weiter komme.
Gruß
Alex
Anzeige
AW: hast du schon mal....
25.11.2019 10:12:46
Werner
Hallo Alex,
und warum beantwortest du meine Frage nicht?
Noch mal: Sind die Nummern in beiden Listen Unikate oder kann es auch sein, dass eine/mehrere Nummern in den Listen mehrfach vorkommenh?
Gruß Werner
AW: hast du schon mal....
25.11.2019 11:26:18
Alex
Hallo Werner,
sorry, die RMNr darf nur einmal in einer Liste vorkommen.
Gruß
Alex
vergleichen_aktualisieren
26.11.2019 09:07:07
Alex
ich hoffe, dass ich doch noch Hilfe bekomme
AW: hast du schon mal....
26.11.2019 14:44:05
Alex
Hallo Werner,
Ich habe es schon erwähnt, dass ich ein Neuling in dem Forum (überhaupt erstmals in einem Forum) dabei bin. Ich komme schwer voran, mache Fehler, aber ich bemühe mich und hoffe es ist auch sichtbar.
Bitte helfe mir die Aufgabe zu überwältigen.
Danke und Gruß
Alex
Anzeige
AW: hast du schon mal....
26.11.2019 23:11:32
Werner
Hallo Alex,
teste mal:
Option Explicit
Sub SuchenErsetzen()
Dim loZeile As Long, loSpalte As Long
Dim raSort As Range
Application.ScreenUpdating = False
With Worksheets("Alt")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, "A"), .Cells(loZeile, loSpalte)).Copy
With Worksheets("Neu")
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row).PasteSpecial _
Paste:=xlPasteAll
Application.CutCopyMode = False
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).FormulaLocal = _
"=ZEILE()"
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value _
= .Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, loSpalte + 1), _
.Cells(loZeile, loSpalte + 1)), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Range(.Cells(1, "A"), .Cells(loZeile, loSpalte + 1)).RemoveDuplicates Columns:=1, _
Header:=xlYes
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, "E"), .Cells(loZeile, "E")), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Columns(loSpalte + 1).Delete
End With
End With
End Sub
Übrigens: Ich weiß ja nicht wie die Daten in die Tabellen "Alt" bzw. "Neu" kommen. Auf alle Fälle sind die Datumswerte in den Spalten "BelegDatum" keine echten Datumswerte sondern Text.
Gruß Werner
Anzeige
AW: hast du schon mal....
27.11.2019 10:06:46
Alex
Guten Morgen Werner,
super, es ist ganz nah dran.
Soll nach Spalte D "BelegNr" sortiert werden (habe angepasst), aber sind fünf Satze bei dem Ergebnis zufiel.
Da sollen nur die Zeilen bis zu letzten vier (sind neu dazugekommen - Aktuell gestartet) aktualisiert werden, weil die RMNr aus „Neu“ sind in „Alt“ auch vorhanden. Die restliche RNMr aus „Alt“ sind schon abgemeldet.
Es soll die Gleiche Zeilen Menge aus "neu" bei dem Ergebnis rauskommen.
Danke und Gruß
Alex
AW: hast du schon mal....
27.11.2019 19:08:44
Alex
Hallo Werner,
"Neu" ist heute, "Alt" ist gestern. Täglich kopiere ich die Daten aus "Neu" nach "Alt" und die Ergebnisse aus einer Abfrage mit Filter nach "Neu". Aber dann fehlen mir die Bemerkungen und Formatierungen aus dem Vortag "Alt".
Die Datumsangaben sind als Text formatiert. Sortierung soll nach "BelegNr" gemacht werden.
Mit Format und Sortierung klappt schon in deiner Lösung, nur nicht alle Sätze aus "Alt" sollen nach "Neu" kopiert werden. Dass habe ich schon vorhin beschrieben.
Gruß
Alex
Anzeige
AW: hast du schon mal....
28.11.2019 17:53:26
Werner
Hallo,
teste mal:
Option Explicit
Sub SuchenErsetzen()
Dim loZeile As Long, loSpalte As Long
Dim raSort As Range
Application.ScreenUpdating = False
With Worksheets("Neu")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("H" & loZeile + 1) = 1
.Range("H" & loZeile + 1).Copy
.Range(.Cells(2, "A"), .Cells(loZeile, "A")).PasteSpecial Paste:=xlPasteAll, operation:= _
xlMultiply
Application.CutCopyMode = False
.Range("H" & loZeile + 1).ClearContents
End With
With Worksheets("Alt")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("H" & loZeile + 1) = 1
.Range("H" & loZeile + 1).Copy
.Range(.Cells(2, "A"), .Cells(loZeile, "A")).PasteSpecial Paste:=xlPasteAll, operation:= _
xlMultiply
Application.CutCopyMode = False
.Range("H" & loZeile + 1).ClearContents
End With
With Worksheets("Neu")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).FormulaLocal = "=ZÄHLENWENN( _
Alt!A:A;A2)"
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value _
= .Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value
.Range(.Cells(1, 1), .Cells(loZeile, loSpalte + 1)).AutoFilter field:=loSpalte + 1,  _
Criteria1:="1"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Copy
With Worksheets("Alt")
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row).PasteSpecial _
Paste:=xlPasteAll
Application.CutCopyMode = False
End With
If Worksheets("Neu").AutoFilterMode = True Then Worksheets("Neu").Rows("1:1").AutoFilter
.Columns(loSpalte + 1).ClearContents
End With
End With
With Worksheets("Alt")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).FormulaLocal = _
"=ZEILE()"
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value _
= .Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, loSpalte + 1), _
.Cells(loZeile, loSpalte + 1)), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Range(.Cells(1, "A"), .Cells(loZeile, loSpalte + 1)).RemoveDuplicates Columns:=1, _
Header:=xlYes
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, "D"), .Cells(loZeile, "D")), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Columns(loSpalte + 1).Delete
End With
End Sub
Gruß Werner
Anzeige
AW: hast du schon mal....
28.11.2019 21:09:04
Alex
Hallo Werner,
leider funktioniert es nicht.
Ich habe jetzt die Tabelle mit deinem Vorschlag hoch geladen. Unter:
https://www.herber.de/bbs/user/133485.xlsm
Bitte probiere es selber aus.
In der Tabelle "Neu nach Aktualisierung" habe ich erwünschtes Ergebnis zusammengestellt.
So soll die Tabelle "Neu" nach der Aktualisierung aussehen.
Wenn du noch welche Infos von mir brauchst, bitte melde dich.
Danke im Voraus und Gruß.
Alex
AW: hast du schon mal....
28.11.2019 23:00:23
Werner
Hallo,
hier deine Beschreibung in der Tabelle:
Die Spalte A der Liste Alt soll mit der Spalte A der Liste Neu verglichen werden. Bei Übereinstimmung ist die jeweilige Zeile in der Liste Neu zu ersetzen.
Und genau das macht mein Makro.
Dein Wunschergebnis hat überhaupt nichts mit deiner Beschreibung zu tun.
Gruß Werner
Anzeige
nö, stimmt nicht.....
28.11.2019 23:21:11
Werner
Hallo,
....mein Fehler, ich hatte im Code die Blätter Alt und Neu vertauscht.
Option Explicit
Sub SuchenErsetzen()
Dim loZeile As Long, loSpalte As Long
Dim raSort As Range
Application.ScreenUpdating = False
With Worksheets("Neu")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("H" & loZeile + 1) = 1
.Range("H" & loZeile + 1).Copy
.Range(.Cells(2, "A"), .Cells(loZeile, "A")).PasteSpecial Paste:=xlPasteAll, operation:= _
xlMultiply
Application.CutCopyMode = False
.Range("H" & loZeile + 1).ClearContents
End With
With Worksheets("Alt")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
.Range("H" & loZeile + 1) = 1
.Range("H" & loZeile + 1).Copy
.Range(.Cells(2, "A"), .Cells(loZeile, "A")).PasteSpecial Paste:=xlPasteAll, operation:= _
xlMultiply
Application.CutCopyMode = False
.Range("H" & loZeile + 1).ClearContents
End With
With Worksheets("Alt")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).FormulaLocal = _
"=ZÄHLENWENN(Neu!A:A;A2)"
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value _
= .Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value
.Range(.Cells(1, 1), .Cells(loZeile, loSpalte + 1)).AutoFilter field:=loSpalte + 1, _
Criteria1:="1"
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Copy
With Worksheets("Neu")
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row).PasteSpecial _
Paste:=xlPasteAll
Application.CutCopyMode = False
End With
If Worksheets("Alt").AutoFilterMode = True Then Worksheets("Alt").Rows("1:1").AutoFilter
.Columns(loSpalte + 1).ClearContents
End With
End With
With Worksheets("Neu")
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).FormulaLocal = _
"=ZEILE()"
.Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value _
= .Range(.Cells(2, loSpalte + 1), .Cells(loZeile, loSpalte + 1)).Value
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, loSpalte + 1), _
.Cells(loZeile, loSpalte + 1)), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Range(.Cells(1, "A"), .Cells(loZeile, loSpalte + 1)).RemoveDuplicates Columns:=1, _
Header:=xlYes
loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
Set raSort = .Range(.Cells(2, "A"), .Cells(loZeile, loSpalte + 1))
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(2, "D"), .Cells(loZeile, "D")), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
With .Sort
.SetRange raSort
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
.Columns(loSpalte + 1).Delete
End With
End Sub
Gruß Werner
Anzeige
AW: nö, stimmt nicht.....
29.11.2019 06:47:12
Alex
juhuuuuuu!!!!
Hallo Werner,
vielen, vielen Dank!
Es funktioniert, Super!
Gruß.
Alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige