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

VBA - Vergleich zweier Excelreiter

VBA - Vergleich zweier Excelreiter
03.02.2017 11:22:22
Thomas
Hallo zusammen
Ich habe leider noch keine Lösung auf meine ursprüngliche Frage erhalten und nun ist der Beitrag archiviert (Archivnummer 1537747).
Martin (AlterDresdner) konnte mir bereits helfen und hat mir folgenden Code geschrieben.
Option Explicit
Function Veränderungen()
Dim oAlt As Object, oNeu As Object, oDiff As Object
Dim zaltE As Long, zneuE As Long, zdiff As Long, zalt As Long, zneu As Long
Dim geaend As Integer
Set oAlt = ThisWorkbook.Sheets("TTP_Vorwoche")
Set oNeu = ThisWorkbook.Sheets("TTP_Neu")
Set oDiff = ThisWorkbook.Sheets("TTP_Veränderungen")
zaltE = oAlt.Cells(Rows.Count, 7).End(xlUp).Row
zneuE = oNeu.Cells(Rows.Count, 7).End(xlUp).Row
With oDiff
.Range("A2:I" & oDiff.Cells(Rows.Count, 7).End(xlUp).Row).ClearContents
'alte Inhalte löschen
zdiff = 2
zalt = 2
For zneu = 2 To zneuE 'alle neuen Zeilen
geaend = 0
If oAlt.Cells(zneu, 7)  oNeu.Cells(zneu, 7) Then Exit For 'Client geändert
If oAlt.Cells(zneu, 2)  oNeu.Cells(zneu, 2) Then geaend = 2 'Änderungsspalten  _
abarbeiten
If oAlt.Cells(zneu, 3)  oNeu.Cells(zneu, 3) Then geaend = 3
If oAlt.Cells(zneu, 8)  oNeu.Cells(zneu, 8) Then geaend = 8
If geaend > 0 Then 'es ist etwas geändert
oNeu.Cells(zneu, 1).EntireRow.Copy
.Cells(zdiff, 1).PasteSpecial xlPasteValues
.Cells(zdiff, 9) = oAlt.Cells(zneu, geaend)
zdiff = zdiff + 1
End If
Next zneu
If zneu 
Allerdings funktioniert das Makro noch nicht wie gewünscht. Aktuell werden alle Zeilen kopiert.
Ich benötige jedoch nur die Zeilen, in welcher es eine Veränderung gab. Ausgangspunkt sollte wie immer der Kundenname in der Spalte G sein. Ist dieser in beiden Files vorhanden, sollte nach Veränderungen in den Spalten B, C, und H gesucht werden. Sind Veränderungen vorhanden sollten diese im Tabellenblatt "TTP_Veränderungen" angezeigt werden.
Das Makro sollte folgendes machen:
- 1. Jeder Client in alt, Suche danach in neu, Differenzen ausgeben
- 2. Suche nach Clienten in alt, die in neu nicht mehr vorhanden sind
- 3. Suche nach Clienten in neu, die es in alt noch nicht gibt
Die Clienten kommen jeweils nur 1x vor.
Besten Dank für eure Hilfe.
Beste Grüsse
Thomas

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Vergleich zweier Excelreiter
03.02.2017 13:00:18
AlterDresdner
Hallo Thomas,
gut Ding will Weile haben.
Anbei die Version 2, schaun mer mal...
Gruß der Martin
https://www.herber.de/bbs/user/111143.xlsm
AW: VBA - Vergleich zweier Excelreiter
03.02.2017 13:56:15
Thomas
Hallo Martin
Besten Dank für Deine Hilfe und die Geduld. Das Makro funktioniert jetzt einwandfrei und ist mir eine grosse Hilfe.
Beste Grüsse und ein schönes Wochenende
Thomas
AW: VBA - Vergleich zweier Excelreiter
03.02.2017 18:09:15
AlterDresdner
Hallo Thomas,
danke für Rückmeldung, Dank und die schönen Grüße.
Zu Deiner .TextFileStartRow-Frage oben: gibt es nicht. Wenn es ein Kriterium für die letzte zu importierende Zeile gibt, könnte man das per Makro regeln.
Gruß der Martin
Anzeige
AW: VBA - Vergleich zweier Excelreiter
06.02.2017 08:22:12
Thomas
Hallo Martin
Danke nochmals für die Rückmeldung. Die Frage ist nicht von mir. Ich hatte nur das von Dir gelöste Problem offen.
Aber vielleicht kannst Du mir trotzdem nochmals kurz helfen. Ich habe ein weiteres File bei dem ich das programmierte Makro mit ein, zwei Anpassungen übernehmen kann. Allerdings gibt es hier, im Gegensatz zum ersten Makro, Kunden die mehrmals vorkommen können. Eine eindeutige Identifikation kann mit einer zusätzlichen Spalte "F" möglich. In dieser Spalte sind jeweils Kommentare vermerkt, welche individuell und einmalig sind.
Beste Grüsse
Thomas
AW: VBA - Vergleich zweier Excelreiter
06.02.2017 21:10:32
AlterDresdner
Hallo Thomas,
gleich am Anfang stehen die 2 Zeilen
.SortFields.Add Key:=Range("C3:C" & Lastrow), SortOn:=xlSortOnValues...
.SetRange Range("A2:R" & Lastrow)
Sie beschreiben den zu sortierenden Bereich (hier A2:Rxxx) und die Spalte, nach der sortiert werden soll (hier C3:Cxxx).
Die letzte Zeile des Bereiches LastRow wird ebenfalls aus Spalte 3 ermittelt:
Lastrow = ActiveWorkbook.ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row 'letzte zeile mit Namen
Kopiert wird bis Spalte 18 (R), die Zahl ist mehrfach vorhanden.
Wenn Du diese Parameter anpasst, sollte es eigentlich gelingen...
Gruß der Martin
Anzeige
AW: VBA - Vergleich zweier Excelreiter
06.02.2017 21:13:38
AlterDresdner
Hallo Thomas,
da war ich geistig beim falschen Thread, vergiß den obigen Beitrag.
Das schau ich mir noch an, aber wohl nicht mehr heute.
Gruß der Martin
AW: VBA - Vergleich zweier Excelreiter
07.02.2017 18:24:17
AlterDresdner
Hallo Thomas,
anbei eine 'anpassungsfähige' Version.
Die Konstanten am Anfang muss man halt richtig setzen, ich gehe aber davon aus, dass in der IDSpalte jeder Begriff nur einmal vorkommt.
Gruß der Martin
https://www.herber.de/bbs/user/111289.xlsm
AW: VBA - Vergleich zweier Excelreiter
09.02.2017 08:44:31
Thomas
Hallo Martin
Nochmals Danke für die Anpassung. Ich glaube, das Makro macht noch nicht 100% das was ich gerne möchte.
Als erstes sollte das Makro, alle Veränderungen aufzeigen. Hierzu kann ich dein bereits erstelltes Makro verwenden. Allerdings kann es sein, dass der Kundenname 2x auftaucht. Hier müsste das Makro aufgrund des Kommentars prüfen, ob es eine Veränderung gab.
Hier ein Beispiel: Ich habe einen Kunden mit 2 Bestellungen in der Vorwoche. In der aktuellen Woche hat der Kunde eine Bestellung gelöscht und bei der zweiten den Wert reduziert:
Vorwoche
  • Name Philippe / Kommentar: Bestellung Velo / Wert 100

  • Name Philippe / Kommentar: Bestellung Auto / Wert 5000

  • Aktuelle Woche
  • Name Philippe / Kommentar: Bestellung Velo / Wert 300

  • Das Makro sollte mir nun "Bestellung Auto" auflisten, weil diese in der aktuellen Woche nicht mehr vorkommt, sowie die Veränderung der "Bestellung Velo".
    Beste Grüsse
    Thomas
    Anzeige
    AW: VBA - Vergleich zweier Excelreiter
    09.02.2017 12:46:50
    AlterDresdner
    Hallo Thomas,
    damit ich sicher bin: eindeutiger Identifikator ist jetzt Name + Kommentar?
    Gruß der Martin
    AW: VBA - Vergleich zweier Excelreiter
    09.02.2017 13:18:39
    Thomas
    Hallo Martin
    Sorry, dass meine Anfragen so ungenau sind :)
    Bei 95% der Fälle reicht der Name als Identifikator, da dieser Name nur 1x vorkommt. Es kann aber sein, dass in seltenen Fällen ein Name mehrfach erscheint. Hier kann mittels dem Kommentar die Differenz gemacht werden.
    Ich wollte verhindern, dass bei den Cases welche nur 1x vorhanden sind, der Kommentar ebenfalls "getestet" wird.
    Sollte dies jedoch nicht möglich sein, kann ich mit einem eindeutigen Indentifikator Name + Kommentar gut arbeiten.
    Besten Dank nochmals für die investierte Zeit! Weiss das sehr zu schätzen!
    Liebe Grüsse
    Thomas
    Anzeige
    AW: VBA - Vergleich zweier Excelreiter
    09.02.2017 22:28:24
    AlterDresdner
    Hallo Thomas,
    anbei 2. Versuch. Es wird immer nach dem 2. Parameter gesucht; ein Verzicht auf die Suche, falls 1. Parameter nur 1mal da, würde das Makro m.E. nur unübersichtlich machen.
    Zu viel Laufzeit sollte es auch nicht kosten. Wenn doch, melde Dich noch mal (oder wenn es noch nicht richtig geht).
    Gruß der Martin
    https://www.herber.de/bbs/user/111353.xlsm
    AW: VBA - Vergleich zweier Excelreiter
    10.02.2017 08:18:05
    Thomas
    Hallo Martin
    Funktioniert tipp topp. Besten Dank. Du kriegst von mir einen VBA-Orden verliehen :).
    Beste Grüsse und ein schönes Wochenende

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige