Home Office-Hilfe.com - Wir lösen Ihr Problem mit Microsoft Excel, Word, Outlook, PowerPoint, Access gratis Forum Impressum

  Tabellenvergleich mittels VBA programmiert...
Neues Thema eröffnenNeue Antwort erstellen
Autor Nachricht
maxseidel
Besserwisser
Besserwisser


Anmeldedatum: 12.03.2008
Beiträge: 67

BeitragVerfasst am: 05.08.2008, 09:32 Nach oben

Hallo,

ich habe im beiliegender Datei ein Makro geschrieben, welches mir 2 Tabellen (Tabelle1 mit Tabelle2) miteinander vergleicht.

Die Tabelle3 gibt alle die Datensätze wieder, die in beiden Tabellen vorkommen.
Die Tabelle4 gibt die Datensätze wieder, die in Tabelle1 aber nicht in Tabelle2 stehen.
Die Tabelle5 gibt die Datensätze wieder, die in Tabelle2 aber nicht in Tabelle1 stehen.

Zum Vergleich dient jeweils die Spalte "Primärschlüssel".

Jetzt komme ich an einer Stelle nicht weiter beim Programmieren.
Wenn ein Datensatz mehr als 1x in einer Tabelle vorkommt und in der anderen nicht, dann gibt mir mein Code den Datensatz nur 1x aus. Ich möchte aber, dass er mir alle Zeilen ausgibt, die in der einen vorkommen und in der anderen nicht.
Hat jemand eine Idee, wie der Code abgeändert werden muss, damit das funktioniert? Ich komme da im Moment nicht weiter. Wenn ein Datensatz z. B 1x in der einen Tabelle steht und mehr als 1x in der anderen, dann muss ich das auch irgend wie merken. Wer hat eine hilfreiche Idee?
Normalerweise sollte das ja nicht vorkommen, es handelt sich ja um einen Primärschlüssel, aber es können ja Fehler passieren und dann möchte ich das merken.

Liebe Grüße


Collectiontest.xls
 Beschreibung:

Download
 Dateiname:  Collectiontest.xls
 Dateigröße:  62 KB
 Heruntergeladen:  20 mal

Benutzer-Profile anzeigenPrivate Nachricht senden
maninweb
Besserwisser
Besserwisser


Anmeldedatum: 03.05.2008
Beiträge: 57
Wohnort: Herzogenrath

BeitragVerfasst am: 05.08.2008, 10:13 Nach oben

Hi maxseidel...

wie Dunauch schon in Deinem Code verwendest, kannst Du das Error Objekt auswerten, wenn Du Elemente Deiner Collection hinzufügst.
Da eine Collection nur eindeutige Einträge haben kann, könnte Dir dieser Beispielcode vielleicht weiterhelfen...

Code:

Public Sub test()
 
  Dim n As Long
  Dim s As String
  Dim c As Collection
 
  On Error Resume Next
 
  Set c = New Collection
 
  For n = 1 To 10
   
    c.Add CStr(n), "X" & CStr(n)
   
  Next n
 
  s = ""
  s = c("X12")
 
  If Err.Number <> 0 Then
 
    MsgBox "X1 war nicht drin"
   
  Else
   
    MsgBox "X1 bereits vorhanden = " & s
   
  End If
 
End Sub


PS: Code einrücken macht diesen deutlich lesbarer.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
maxseidel
Besserwisser
Besserwisser


Anmeldedatum: 12.03.2008
Beiträge: 67

BeitragVerfasst am: 05.08.2008, 10:30 Nach oben

Erst einmal ganz vielen Dank.

Ich komme nicht so richtig mit diesem Code zu Recht, sorry.
Kannst du mir den mal in meinen angepasst einfügen...? Das wäre echt lieb.

[Die Ausgabe in einer MsgBox ist nicht so günstig, da es ja mehrere Datensätze sein könnten und ich diese ausdrucken möchte. Zum Teil muss ich sie, wenn sie in der einen Tabelle und nicht in der anderen stehen trotzdem erstmal dann in die andere einfügen (dazu kopiere ich die Zeilen). Der Primärschlüssel wird dann später etwas umgewandelt und wirklich zu einem Primärschlüssel. Dann muss ich später nur noch den Primärschlüssel ändern.]

LG
max
Benutzer-Profile anzeigenPrivate Nachricht senden
maninweb
Besserwisser
Besserwisser


Anmeldedatum: 03.05.2008
Beiträge: 57
Wohnort: Herzogenrath

BeitragVerfasst am: 05.08.2008, 20:40 Nach oben

Hi maxseidel...

gerne helfe ich Dir weiter, bin allerdings im Moment etwas unter Zeitdruck. Wenn's also ein paar Tage warten kann, wär's ok.
Was natürlich nicht heißt, dass sich vielleicht auch jemand anderes findet, der weiterhilft.

Gruß
Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
maxseidel
Besserwisser
Besserwisser


Anmeldedatum: 12.03.2008
Beiträge: 67

BeitragVerfasst am: 05.08.2008, 22:01 Nach oben

ich danke dir. ich habe da noch ein bisschen Zeit. Wäre echt toll, wenn du mir da helfen könntest, komme nämlich an dieser Stelle wirklich nicht weiter und habe schon lange darüber nachgedacht. Vielleicht denke ich auch irgend wie andauernd in die falsche Richtung.
Also, bitte nicht vergessen, der Eintrag rutscht ja dann ziemlich schnell nach unten.
LG
max
Benutzer-Profile anzeigenPrivate Nachricht senden
maninweb
Besserwisser
Besserwisser


Anmeldedatum: 03.05.2008
Beiträge: 57
Wohnort: Herzogenrath

BeitragVerfasst am: 07.08.2008, 19:27 Nach oben

Hi maxseidel...

habe mal was programmiert und versucht möglichst viele Kommentare
zu schreiben. Mein Ansatz ist jedoch ein anderer. Dieser basiert darauf,
dass ich Collections zum Verwalten der Werte, der Zeilennummern und
eines Indexes verwende. Doppler werden als kommaseparierte Liste
geschrieben. Danach braucht man nur die Liste wieder splitten und
hat das Ergebnis. Schaue Dir die Tabellen A, B und Ergebnis an sowie
die Sub Vergleich_Neu().

Gruß


Collectiontest.xls
 Beschreibung:

Download
 Dateiname:  Collectiontest.xls
 Dateigröße:  100 KB
 Heruntergeladen:  13 mal

Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
maxseidel
Besserwisser
Besserwisser


Anmeldedatum: 12.03.2008
Beiträge: 67

BeitragVerfasst am: 08.08.2008, 06:50 Nach oben

Kompliment - gefällt mir.

Es gibt nur ein Problem: du hast in deiner Liste eine Durchschnittsmenge dargestellt, d.h. alle die Elemente, die in beiden Listen vorkommen. Das entspricht inhaltlich meiner Tabelle 3.
Ich benötige jedoch vor allen eine Mengendifferenz, d.h. alle die Elemente, die einerseits in Tab1 und nicht in Tab2 und die andererseits in Tab 2 und nicht in Tab1 vorkommen. Das sind bei mir die Tabellen 4 und 5.

Somit ist leider mein Problem trotz deines wirklich großen Engagementes nur teilweise gelöst. Vielleicht hast du ja noch Lust, dich meinem Problem weiter anzunehmen. Ich wäre dir sehr, sehr dankbar, denn dafür habe ich eben noch keine Lösung gefunden (es gibt aber bestimmt eine, denn SQL wertet ja solche sog. Outer Joins ja auch irgend wie aus...also muss es gehen, aber wie???)

Liebe Grüße
Benutzer-Profile anzeigenPrivate Nachricht senden
maninweb
Besserwisser
Besserwisser


Anmeldedatum: 03.05.2008
Beiträge: 57
Wohnort: Herzogenrath

BeitragVerfasst am: 08.08.2008, 10:01 Nach oben

Hi maxseidel ...

die Collections bieten Dir auch diese Möglichkeit, die Abfragen am Ende
müssen nur 'umgedreht' werden. Beispielhaft mal die Erweiterung.

Gruß


Collectiontest.xls
 Beschreibung:

Download
 Dateiname:  Collectiontest.xls
 Dateigröße:  105 KB
 Heruntergeladen:  10 mal

Benutzer-Profile anzeigenPrivate Nachricht sendenWebsite dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen


Ähnliche Beiträge
Thema Autor Forum Antworten Verfasst am
Keine neuen Beiträge Ergänzung leere Zellen mittels wenn-d... tobi968 Microsoft Excel Hilfe 1 21.10.2008, 09:21 Letzten Beitrag anzeigen
Keine neuen Beiträge Internet-Link mittels CommandButton a... timi Microsoft Excel Hilfe 1 14.07.2008, 11:51 Letzten Beitrag anzeigen
Keine neuen Beiträge Vergleich von Tabellenblättern mittel... maxseidel Microsoft Excel Hilfe 0 09.07.2008, 18:51 Letzten Beitrag anzeigen
Keine neuen Beiträge Verleich von 2 Tabellen mittels VBA maxseidel Microsoft Excel Hilfe 3 03.07.2008, 07:36 Letzten Beitrag anzeigen
Keine neuen Beiträge Maske aufrufen mittels Button timi Microsoft Excel Hilfe 2 29.04.2008, 23:42 Letzten Beitrag anzeigen


 Gehe zu:   



Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen

Haftungsausschluss/Disclaimer


SMS kostenlos versenden | Battle-Dream | Tuning Forum | Join the YoungGeneration | krankenversicherungsvergleich | Kalorienarme Rezepte!
Versicherungsvergleich | Bürobedarf | Papier | Betten

Ranking-Hits



Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Alle Zeiten sind GMT + 1 Stunde
Deutsche Übersetzung von phpBB.de