Excel VBA - Vergleiche von Werten unterschiedlicher Tabellen

Moin Leute,

habe mich hier im Forum angemeldet, da ich öfters schon gute Beiträge gelesen habe. Nun habe ich selber ein Problem:

Ich habe mehrere riesige Tabellen (genauer gesagt 3, eine davon mit bis zu 22.000 Zeilen), die per Hand erarbeitet werden. Dabei geht es um Produkte, von denen in den jeweiligen Tabellen unterschiedliche Informationen festgehalten werden. So zB Artikelnr, Sortimentsname, usw usf.
Da die verschiedenen Tabellen von verschiedenen Leuten erarbeitet werden, treten oft Kommunikationsfehler bzw generelle Fehler auf.

Da diese Tabellen als Grundlage zur Berechnung genutzt werden ist das natürlch fatal.

Das soll natürlich vermieden werden!

Daher brauche ich ein Makro, das die Zeilen bzw Werte (.Value) der Zeilen (das können sowohl Zahlen als auch Buchstaben sein) ausliest und vergleicht.

Mein Problem also: Das Erstellen eines geeigneten Makros, das sich jeweils einen Wert aus Tabelle1, einer zu definierenden Spalte (bspw. angefangen mit Spalte A, wenn alle Einträge durch gehe zu Spalte B usw) und einer Zeile raussucht, und mit einem Wert aus Tabelle 2 vergleicht (diese Tabelle wäre fest, daher würden sich die Zellennamen nicht ändern)
das Ganze müsste in einer Schleife sein, die jeweils von Spalte a bis x der zeilen 1 bis x die Werte der Tabelle 1 mit denen aus Tabelle 2 abgleicht.

Ich komme dort leider nicht weiter!! xD Daher brauche ich eure Hilfe.
Ich hoffe, die Einweisung hat euch nicht gelangweilt (wenn ihr genauere Infos haben wollt warum ich das machen muss usw einfach fragen) und wenn euch noch Infos fehlen, einfach melden. Vielen Dank schonmal!

LG
Timotheus
 
Hallo,

ist der Aufbau der Tabellen von den Spalten her immer gleich (Spalte A = Artikelnummer, Spalte B = Artikeltext, ...) und welchen Spalten sollen miteinander verglichen werden?

Was auch nicht klar ist, was soll passieren wenn ein Vergleich mehrere ähnliche Treffer findet?
 
hey,

schonmal danke für deine antwort :) also es geht darum: wir geben einen katalog an unsere kunden raus. nun wird eine tabelle erstellt (von kollegen aus anderen abteilungen), die für jeden artikel in dem katalog die artikelnr, verschiedene kennzheichen, sortimentsname usw usf beinhaltet. somit ist die struktur immer die gleiche, die anzahl artikel und der inhalt der zellen natürlich nicht. also spalte a ist bspw. immer die artikelnr, spalte c der sortimentsname usw...
aber da das menschen machen sind ab und zu fehler drin.

in unserer abteilung haben wir also eine referenztabelle, in der zu finden ist, auf welcher seite im katalog welche sortimentsgruppe vertreten ist. von daher wäre hier ein abgleich möglich; das makro sucht sich aus tabelle 1 spalte c den value raus und aus spalte e die seite (exemplarisch gesagt jetzt) und vergleicht quasi den wert mit den jeweiligen aus tabelle 2, wobei hier die belegung ebenfalls nicht varriert.

im grunde genommen kann eine abfrage ja nur einen treffer geben, wenn man zwei bedingungen hat- bspw. sortimentsname und seite werden abgeglichen.

ich hoffe das hilft weiter xD
 
Tabelle 1:

Code:
Spalte A (Artikelnummer) | Spalte B (Sortimentsgruppe) | Spalte C (Seitenzahl) |
123                      | Sort A                      | 10                    |
456                      | Sort B                      | 25                    |
789                      | Sort C                      | 30                    |


Tabelle 2:
Code:
Spalte A (Sortimentsgruppe) | Spalte B (Seitenzahl) |
Sort A                      | 10                    |
Sort B                      | 20                    |
Sort C                      | 30                    |

Jetzt soll also angezeigt werden das in Tabelle 1 entweder die Sortimenstgruppe oder die Seitenzahl falsch ist?
 
exakt- super :D so einfach hätt ichs ja auch darstellen können- sry, bin neu^^

genau, das ist das "problem"- dazu kommt natürlich noch, dass geschaut werden muss, dass bspw. die artikelnr keine buchstaben enthält, aber ich denke, dass könnte ich auch noch hinkriegen xD

hast du zufällig ne lösung parat?^^
 
Also wenn die Artikelnummern wirklich nur aus Zahlen bestehen, dann würde ich diese Spalte mit der Funktion "Gültigkeit" einfach darauf festlegen.

Für die Prüfung probiere ich hier mal ein bisschen rum und melde mich dann wieder!
 
Bin mir nicht sicher ob ich das jetzt richtig verstanden habe oder nicht.
Gibt es jetzt eine Datei mit mehreren Tabellen oder gibt es zwei verschiedene Dateien mit einer oder mehreren Tabellen.

Wenn es nur eine Datei ist die sowohl die "Referenztabelle" als auch die Daten selber enthält brauchst du kein Makro.

1) in Tabelle 1 die Sortimentsgruppen und die Seitenzahl eingeben.

2) der (gesamten) Spalte welche die Sortimentsgruppen enthält einen Namen geben, z.B. "sortiment".

3) in Tabelle 2 die Spalte in die ebenfalls die Gruppen eingetragen werden sollen mit "Gültigkeit" -> "Liste" und als Wert "=sortiment" eingeben. Wichtig das Häckchen bei "leere Zeilen ignorieren" rausnehmen.

4) in die Spalten in welche jetzt die Seitenzahl der Gruppe eingetragen werden soll kommt ein SVERWEIS um je nach Auswahl aus der Liste die Seitenzahl automatisch ermittelt wird.

Klingt jetzt vielleicht kompliziert, ich hänge deshalb mal ein Beispiel dran damit klarer wird wie es aussehen soll.
 

Anhänge

  • vergleich.zip
    2,7 KB · Aufrufe: 323
schonmal danke an dieser stelle für dein engagement :)

das sind insgesamt drei unterschiedliche tabellen in untershciedlichen dokumenten. davon wird eine nie (zumindest auf ziemlich lange sicht) verändert und bei den zwei anderen verändern sich die werte innerhalb der zellen wobei die grundstruktur erhalten bleibt (also gleichviele spalten mit jedes mal exakt den gleichen inhaltsgruppen" --> also artikelnr ist immer spalte a, seite immer spalte c usw)

was ich also brauchen würde wäre ein "allgemeines" makro, das jeweils eine oder mehrere gewisse spalten durchgeht und mit spalten aus einer anderen tabelle vergleicht.
quasi so eine art suchalgorithmus:

- nehme zelle a1 aus tabelle 1 (bzw den .value)
- suche in tabelle 2 spalte c nach dem wert
- wenn gefunden: nehme wert aus zelle a2 aus tabelle 1 und suche in tabelle 2 spalte c nach dem wert
- wenn nicht gefunden: MsgBox: Achtung fehler in zeile x (oder so)

von daher bin ich der meinung (bei meinen nicht sehr weitreichenden vba-excel kenntnissen) dass ich ein marko brauche.

hab mir auch schon gedanken gemacht wie ich das lösen könnte (hab mal mit java programmiert, daher hat das ein bisschen java charakter, ich hoffe du kannst damit was anfangen xD)
ist also quasi nur "gedankencode":

eine alles ummantelnde while-schleife (wird nur ausgeführt bis die spalte keine einträge mehr hat)
also sowas wie "while (int anzahl <= SpalteA.length())"

dann muss jeweils die zelle ausgewählt werden, also sowas wie:
aktuellesElement()

dann wird der vergleich der values mit der anderen tabelle gemacht

if true (werte gleich) --> tabellenzelle +1 (also nächste zelle nehmen)

if false --> fehler ausgeben (zB über msgbox)


edit: habe die datei übrigens auch runtergeladen und angeguckt, so in der art ist das ;) ich hänge dir sonst morgen mal einen ausschnitt aus den "echten" tabellen ran, hab sie im moment nicht zur hand :/
 
Zuletzt bearbeitet:
Also ich habe jetzt 2 separate Dateien erstellt

Code:
vergleich.xls : die Sortimentgruppen und die entsprechenden Seitenzahlen
werte.xls     : die Artikelnummer, Sortimentgruppe und Seitenzahl (mit Fehler)

In der Datei "vergleich.xls" gibt es dann auch ein Makro. Wenn dieses Makro gestartet wird, wird als erstes nach dem Namen der zu prüfenden Datei gefragt. Gib hier einfach mal "werte.xls" ein und klick auf OK.

Probiere damit mal ein bisschen herum und sage mir ob es deiner Vorstellung entspricht.

Wenn ja kannst du es entweder selber auf deine Dateien anpassen oder du stellst mal davon hier rein (bitte im Excel 2000 Format).
 

Anhänge

  • vergleich.zip
    14,7 KB · Aufrufe: 288
hmm, wenn ich das makro ausführe, kommt, nachdem ich den namen der datei eingegeben habe, ein fehler:
ein vba fehler mit dem code 400

(wie kann ich hier bilder von meiner festplatte hochladen, er will bei mir eine url haben)

der fehler kommt egal welchen dateinamen ich eingebe :/ vllt hilft dir das. und achja: ich hab excel 2007, vllt scheiterts daran?

aber im grunde genommen ist das genau das was ich brauche, in meinem falle ist die tabelle nur deutlich komplizierter und man muss vermutlich ein paar mehr schleifen einbauen- die lad ich dir morgen sonst mal hoch
 

Neue Beiträge

Zurück