Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenabgleich aus Listen

Datenabgleich aus Listen
09.08.2006 10:58:49
B.
Morgen die Herren,
mal wieder eines der beliebten Listen-Probleme, heute zum Thema „’nen Abgleich fahren“.
Ich habe 2x Listen, zu je 3 Spalten.
Diese beiden Listen mit identischem Aufbau, aber NICHT-identischem Inhalt sind schon das Ergebnis einer Vorbearbeitung (Makros/Formeln/Pivot) und liegen nun in einem Blatt so vor:
A______B______________C______D_______E______________F______G
Nr._____Bezeichnung_____Anzahl__ Nr._____Bezeichnung_____Anzahl__Auswertung
T123___BlaBla__________3_______T123___BlaBla___________5______-2
T234___BlaBla__________5_______T234___BlaBla___________4______1
T345___BlaBla__________7_______T345___BlaBla___________7______
Jetzt muss ich folgendes realisieren:
Die Anzahlen (Spalten C und F) gleicher Nummern-Einträge (Spalten A und D) sollen verglichen werden.
- weichen die Werte voneinander ab, so gilt C-F (C minus F) und der Wert soll in G stehen (pos. oder neg.)
- gleichen sich die Werte bleibt G entweder leer oder es steht eine 0 drin, das ist egal
Soweit so gut, aber es gibt ein Problem:
Beide Listen haben keine identischen Nr.-Einträge, was die Spalten A und D anbelangt. D.h. in Spalte A kann meinetwegen
A__________________________D
T123___aber in Spalte D kann___T123
T234_______________________T345
T456_______________________T789 vorkommen.
Wenn also in der einen Liste (A bis C) von Artikel T123 nichts verschickt wurde, taucht der ganze Eintrag dort nicht auf, ergo verschieben sich die Zeilen, wenn der Artikel in der anderen Liste (D bis F) mit einer Anzahl erfasst ist. Ab dem ersten Auftreten dieses Falles stehen als in der gleichen Zeile bei A und D nicht mehr die gleichen Nummern...
So sollen am Ende die möglichen Fälle aussehen:
A______B______________C______D_______E______________F______G
Nr._____Bezeichnung_____Anzahl__ Nr._____Bezeichnung_____Anzahl__Auswertung
T123___BlaBla__________3_______T123___BlaBla___________5______-2
T234___BlaBla__________5_______T234___BlaBla___________4______1
T345___BlaBla__________7_______T345___BlaBla___________7______
T456___BlaBla__________7_____________________________________
______________________________T567___BlaBla___________7______
Anmerkung:
Beide Listen (hier Spalten A bis C und D bis F) liegen mir auch einzeln vor, ich habe sie nur nebeneinander in ein Blatt kopiert. Sollte es die Sache vereinfachen, so könnte man den Abgleich ohne Probleme über 2 getrennte Blätter oder Dateien fahren.
Irgendwie überblicke ich die nötigen Operationen nicht und weiß nicht, wie ich mit den unterschiedlichen Nr.-Spalten verfahren soll. Der Knackpunkt ist halt, daß sich in beiden Listen in Spalten A und D zeilenweise nur gleiche Einträge gegenüberstehen dürfen. Kommt in einer Zeile eine Nr. aus Spalte A in Spalte D nicht vor, muss entsprechend die ganze Zeile ab D einfach leer bleiben (entsprechend kommt ein Eintrag in A nicht vor, aber in D, dann muss halt A,B und C einfach leer bleiben).
Weiß hier jemand Abhilfe?
Danke & Grüße,
Bernd

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenabgleich aus Listen
09.08.2006 16:17:29
ingUR
Hallo, Bernd,
das ist eine schöne Aufgabe, deren Lösungsweg auch gut im Bereich von zwei verschiedenen Zeitreihen eingesetzt werden kann, wo die Zeitstemmpel zeilenweise nicht übereinstimmen.
Anders als bei diesen, ist jedoch in Deinem Fall die Klärungsfrage zu stellen, ob die beiden Reihen in ihrer speziellen Ordung erhalten bleiben müssen oder ob eine Umordnung stattfinden kann.
Ist letzteres möglich, sollte iin einem ersten Schritt die beiden Tabellen sortiert werden, so das zwei sortierte Listen gegenüberstehen.
Ferner ist zu fragen, ob die Listen in sich wiederholen haben können und gleich anschließend: können auch Artikelnummer in der Vergleichsliste nicht auftauchen, die in der Gegenliste nicht auftauchen, vice versa.
Ob man überschaubare Zellenformel (SVERWESI, INDIREKT ...) erstellen kann, die eine dritte, geordnete Liste erstellt, wird im wesentlichen von den Antworten zu den Fragen abhängen. Da ich zur Erstellung von komplexen Zellenformeln nicht das gesicherte Anwenderwissen habe, würde ich eine Modullösung versuchen.
Dazu würde ich die Datenfelder in Datenfelder einlesen, ggf. sortieren, wenn die Anzahl der Reihen groß ist, und dann in einem neuen Datenfeld die Ergebnisreihe aufbauen, wozu die erste Liste durchgearbeitet wird und eine zugehörige ArtNr. in der zweiten Liste gesucht wird.
Ist die Bearbeitung eines Datensatzes der ersten Liste erfolgt, erhalten die Datensätzen in den Listen, für die eine Übereinstimmung gefunden ein Flag gesetzt oder aber eine gleiche Ordnungsnummer als Zusatzfeld.
Die Ausgabe kann dann in einer Liste auf einem Tabellenblatt erfolgen.
Wenn zu dieser Grundlage weiterer Erörterungsbedarf zur Ausarbeitung besteht, dann werde ich sicher von Dir lesen, zumal mich die eine geschickte Lösung, wegen oben angedeuteter Übertragung auf ordnen von Zeitreihen zur anschließenden Weiterbearbeitung (Vergleich/Auswertung) auch interessiert.
Gruß,
Uwe
Anzeige
AW: Datenabgleich aus Listen
11.08.2006 14:00:04
B.
Salùt Uwe,
leider muss ich Dich enttäuschen.
Eine manuelle Test-Datenauswertung hat (mehr oder weniger zufällig) ergeben, daß die Daten der zu vergleichenden Listen nicht konsistent sind. Die Werte in beiden Listen sollten sich +-5-10% etwa entsprechen, einige Werte dürften auch gröber abweichen.
Aber da stimmt irgendwas hinten und vorne nicht.
Von etwa 20 Datenpaaren zum testen war kein einziges auch nur Andeutungsweise in vergleichbarem Bereich (500 zu 17000 und so Geschichten, auch kein Muster/Algorithmus zu erkennen).
Ergo keiner weiß so genau wie die eine Liste entsteht (was und wie gezählt wird) und dieser Abgleich ist storniert...folglich auch meine Anfrage (was mir allerdings 'nen Haufen Ärger einbrockt, weil ich jetzt nicht so genau weiß, wie ich aus anderen Datensätzen ein entsprechendes Abgleichsergebnis generieren soll...).
Trotzdem Danke für die Anregungen & Grüße,
Bye B.
Anzeige
AW: Datenabgleich aus Listen
11.08.2006 15:38:57
ingUR
Hallo, B. Stadler,
obwohl Du die Anfrage zurückgezogen hast, habe ich mich doch mit dem Thema weiter beschäftigt, zumal Dein in Klammern gesetzter Satz, nicht gerade von Zufriedenheit mit Deiner Entscheidung zeugt).
Leider hast Du die eine Frage nicht beantwortet, die darauf abzielte, die Anwort zu erhalten, ob die Reihenfolge der Einträge zu erhalten ist oder nicht.
Die Ausgabe er VBA-Lösung für Deine Aufgabe, die wie angedeutet Datenfelder zum Abgleich benutzt, gestaltet sich recht einfach, wenn man die Einträge, zu denen in beiden Listen gültige Angaben gefunden hat, als ersten Block in eine Tabelle trägt und anschließend die Datensätze der ersten Tabelle di in der zweiten Tabelle nicht vorhanden sind und danach die Einträge der Tabelle 2, die in der ersten Tabelle nicht gefunden wurden.:
Ausgangstabelle

Nr	Bezeichnung	Anzahl	Nr	Bezeichnung	Anzahl
T123	Bez.: T123	3	T123	Bez.: T123	5
T234	Bez.: T234	5	T234	Bez.: T234	4
T345	Bez.: T345	7	T789	Bez.: T789	7
T777	Bez.: T777	5	T888	Bez.: T888	0
T888	Bez.: T888	12	T989	Bez.: T989	12

Tabelle nach Vergleich und Ausgabe:

lfd.Nr.	ArtNr.	Bezeichnung  Anz.Data1	ArtNr.	Bezeichnung Anz.Data2	Differenz
1	T123	Bez.: T123	3	T123	Bez.: T123	5	-2
2	T234	Bez.: T234	5	T234	Bez.: T234	4	1
3	T888	Bez.: T888	12	T888	Bez.: T888	0	5
4	T345	Bez.: T345	7
5	T777	Bez.: T777	5
6				         T789	Bez.: T789	7
7				         T989	Bez.: T989	12

Es wäre nun, wenn es denn erforderlich ist, eine Logik in die Ausgaberoutine einzubauen, die wechselweise die Ursprungstabellen Gestaltung betrachtet um die Auskanngsreihenfolge in den Tabellen zu beachten, was allerdings dadurch erschwert wird, dass ein Wert T145 in der sechten Zeile der Tabelle 2 durchaus in der Tabelle 1 an einhunderter Stelle vorkommt, wodurch eine der beiden Tabellenordnungen aufgegeben werden müßte.
Zur Zeit wird jedoch in jedem Fall davon ausgegangen, dass die Bezeichner in jeder Tabelle nich wiederholt erscheinen.
Die Arbeitsmappe habe ich hier hochgeladen: VerbindungZweiDatenreihen
Im Algemeinen Teil des Moduls, habe ich ein paar Steuerparameter als Umgebungsvariable für die Anwendung geestellt:

Type record
Anr As String
Bez As String
Anz As Integer
flg As Integer
End Type
Dim Data1() As record, Data2() As record, Data3() As record
Dim ws(3) As Worksheet
Const wsName1 = "Tabelle1" 'Tabelle mit Datenreihe 1 (Data1)
Const wsName2 = "Tabelle1" 'Tabelle mit Datenreihe 2 (Data2)
Const wsName3 = "Tabelle2" 'Ausgabetabelle der zusammengeführten Tabelle mit Rech.Ergebn.
Const c01 = 0 'Spalte VOR der Data1-Tabelle auf wsName1
Const c02 = 3 'Spalte VOR der Data2-Tabelle auf wsName2
Const c03 = 0 'Spalte VOR der Ausgabe-Tabelle auf wsName3
'mit c03=c01|c02 und wsName3=wsName1|wsName2
'wird bestehende Datentabelle zu Data1|2 auf wsName1|2 überschrieben

hier sind die Angaben zu den Tabellennamen und die Werte der Konstante für die Mappen und Bereiche aus denne eingelesen bzw. in die geschreiben wird, von bedeutung und können nach Deinen Anforderungen verändert werden.
Natürlich ist das nur ein Entwurf, für den ich nioch nicht mit Bestimmtheit sagen kann, dass alle möglichen Fehler nicht auftreten können. Asl Ausgangsunterlage, scheint es mir aber geeignet.
Gruß,
Uwe
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige