Tabellenvergleich eingefügte Zeilen
#1
Hallo Leute,
ich bräuchte mal Hilfe bei einem Problem zu dem ich nichts passendes finde.
Beispieldatei habe ich angefügt. (stark gekürzt)
Wir haben eine neue Brandmeldeanlage bekommen, die im Laufe der nächsten Jahre Stück für Stück die alte ersetzen soll. Teile der Programmierung kann ich mir als .csv exportieren. Jetzt wird in der nächsten Zeit immer mal wieder ein Mitarbeiter der Fa. S...s kommen und etwas umprogrammieren. Dabei kann es folgende Änderungen geben:
  1.Zeilen werden eingefügt (Erweiterung)
  2.Zeilen werden gelöscht. (nicht so oft, aber denkbar)
  3.Texte ändern sich (Spalte E)
sonstige Änderungen wird es wahrscheinlich nicht geben.
Da die Datei jetzt schon ca. 1000 Zeilen hat und auf ca 10.000 wachsen wird ist es fast unmöglich Unterschiede durch drüberschauen zu finden.
Hat jemand eine Idee ?
Werde wohl erst Montag wieder reinschauen, weil ich in 30 Min Feierabend habe.
Danke im Voraus.
Gruss Igel


Angehängte Dateien
.csv   Beispiel.csv (Größe: 1,12 KB / Downloads: 7)
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Top
#2
Hallo,

ein erste Antwort:

In CMD gibt es die Funktion "FC" (file compare)

In der Beispieldatei habe ich eine "0" gegen "neu" ersetzt, das Ergebnis war:

Code:
fc Beispiel.csv Beispiel2.csv
Vergleichen der Dateien Beispiel.csv und BEISPIEL2.CSV
***** Beispiel.csv
1100;1101;9415;1;U2 Flur Bereitschaft;;;0;;;
1100;1101;9418;;U2 Bereitschaft Behandlung  Raum;;;0;;;
***** BEISPIEL2.CSV
1100;1101;9415;1;U2 Flur Bereitschaft;;;0;;;
1100;1101;9415;1;U2 Flur Bereitschaft;;;neu;;;
1100;1101;9418;;U2 Bereitschaft Behandlung  Raum;;;0;;;
*****

Da es viele Alternativen gibt, sollte bevor es Ernst wird, gründlich getestet werden.

mfg
Top
#3
Hi Fen,
Einzelne Änderungen in den Texten tät ich wohl noch selber hinkriegen, problematischer sind eingefügte oder gelöschte Zeilen.
Aber danke schon mal.
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Top
#4
In der Datei "Beispiel2.csv" war eine Zeile eingefügt.

Es geht auch mit Powershell

Code:
Compare-Object (gc .\Beispiel.csv) (gc .\Beispiel2.csv  )

Das Ergebnis ist:

Code:
InputObject                                    SideIndicator
-----------                                    -------------
1100;1101;9415;1;U2 Flur Bereitschaft;;;neu;;; =>

Da müßten alle Varianten durchgespielt werden, um die Ausgabe gut interpretieren zu können.

mfg


Angehängte Dateien
.csv   Beispiel2.csv (Größe: 1,17 KB / Downloads: 3)
Top
#5
Moin, schönen Montag erstmal, Angel

Okay, Fen, hast recht, aber so richtig kann ich mich damit nicht anfreunden.
Es kann durchaus passieren, dass auf einen Schlag ein paar hundert Änderungen vorgenommen werden.
Da ist mir das doch etwas schwer zu lesen.
Mir schwebt eher etwas in der Art, wie in der diesmal angefügten Datei. Die beiden csvs in alt und neu kopiert und dann im 3. Blatt die Unterschiede aufgelistet.

Eilt nicht, hab noch´n Berg anderer Arbeiten.

Gruss Igel

...Anhang nochmal geändert


Angehängte Dateien
.xlsx   BMA_Änderungen.xlsx (Größe: 10,92 KB / Downloads: 3)
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Top
#6
Hallo,

da es nicht das erste Mal ist, dass so ein Thema aufkommt, sollte man alle verfügbaren Programme prüfen, bevor man selbst einen VBA-Code schreibt.

https:/ /en.wikipedia.org/wiki/Comparison_of_file_comparison_tools

https:/ /thegeekpage.com/12-best-free-file-comparison-tools-for-windows-10/

https:/ /download.cnet.com/Files-Compare-Tool/3000-2248_4-10315688.html

https:/ /www.wikihow.com/Compare-Two-Excel-Files

https:/ /prestosoft.com/edp_examdiff.asp

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • Igelbauer
Top
#7
Hi
das ExamDiff teste ich mal. Wird aber etwas dauern. Hatte auch für die alte BMA ein Programm namens WinMerge.
War für txt. Dateien super. Die alte BMA hat txt. exportiert. Danke erstmal.

Was den deinen Hinweis mit dem Dateiupload betrifft steh ich auf dem Schlauch.

Wenn ich etwas übersehen haben sollte : Ich habe noch ca. 35% Sehkraft und arbeite mit Irrsinnsauflösung und Bildschirmlupe. Sorry

Gruss Igel
Ich kann nicht alles wissen,
aber vieles lernen ! 19
Top
#8
Hallo Igelbauer,


Zitat:Was den deinen Hinweis mit dem Dateiupload betrifft steh ich auf dem Schlauch.
dafür kann Fennek nichts - die Forensoftware hat den Hinweis automatisch geschrieben. Ich habe die geposteten Links "sichtbar" gemacht. Damit sie nach Copy&Paste in deinem Browser auch funktionieren, musst du das Leerzeichen zwischen den beiden Slashs entfernen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Igelbauer
Top
#9
Hi,

(15.06.2020, 09:59)Igelbauer schrieb: War für txt. Dateien super. Die alte BMA hat txt. exportiert. Danke erstmal.

Du könntest ja notfalls die csv-Datei in .txt umbenennen.
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • Igelbauer
Top
#10
Hallo,

hier ein erster Ansatz mit VBA:

- die Sheets "alt" und "neu" werden in ein 1-dim Array gewandelt
- im Sheets("VBA") werden beide mit "Match()" verglichen

Damit kann man gelöschte und neue Zeilen erkennen.

Ein Prüfung auf Änderungen steht noch aus.

mfg

Code:
Sub F_en()
Dim App As Application: Set App = Application
Dim alt1, neu1
alt = Sheets("alt").Cells(1).CurrentRegion
neu = Sheets("neu").Cells(1).CurrentRegion
ReDim alt1(UBound(alt))
ReDim neu1(UBound(neu))

For i = 1 To UBound(alt)
    alt1(i) = Join(App.Index(alt, i, 0), ";")
Next i

For i = 1 To UBound(neu)
    neu1(i) = Join(App.Index(neu, i, 0), ";")
Next i

With Sheets("VBA")
    .Range("B1").Resize(UBound(alt1)+1) = App.Transpose(alt1)
    .Range("B1:B" & .Cells(Rows.Count, 2).End(xlUp).Row).Name = "alt"
    .Range("E1").Resize(UBound(neu1)+1) = App.Transpose(neu1)
    .Range("E1:E" & .Cells(Rows.Count, 2).End(xlUp).Row).Name = "neu"
    .Range("A2:A" & .Cells(Rows.Count, 2).End(xlUp).Row) = "=row()"
    .Range("D2:D" & .Cells(Rows.Count, 5).End(xlUp).Row) = "=row()"
    .UsedRange.Cells = .UsedRange.Cells.Value
    
    .Range("C2:C" & Cells(Rows.Count, 2).End(xlUp).Row) = "=Match(RC[-1], neu, 0)"
    .Range("F2:F" & Cells(Rows.Count, 5).End(xlUp).Row) = "=Match(RC[-1], alt, 0)"
End With

End Sub


Angehängte Dateien
.xlsm   Igel BMA_Änderungen.xlsm (Größe: 22,41 KB / Downloads: 3)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste