Excel VBA duplikate finden und markieren in 2 verschiedenen spreadsheets, wie lautet der code?
Hallo,
ich habe 2 excel dateien und wuerde gerne von einer Datei (Ich nenn sie mal Data1) eine bestimmte Spalte (zb. F) vergleichen mit einer spalte (zb. G) in einer anderen Datei (Data2)
Also: Mein Makro soll dann: F2 in data1 suchen in G von data2. Findet er was soll er beide Zellen gelb markieren und das gleiche mit F3 nochmal usw... Findet er nichts, soll er halt direkt mit F3 weitermachen.
Hat jemand eine Code dazu?
Habe natuerlich schon gegoogelt, finde jedoch nicht das was ich exakt brauche (bin ein Anfaenger und kann nicht einfach einen Code anpassen fuer mein Problem)
Ich hoffe ihr koennt mir dabei helfen.
PS: ich wuerde gerne (hoffe dass ist jetzt nicht zuviel verlangt) dem makro jeweils sagen koennen welche 2 spalten er vergleichen soll. Also eine Art inputbox wo ich bei jedem Start sagen kann: Such jede Zelle von F(data1) in G(data2) (sodass ich es bei bedarf eben auf andere spalten auch direkt anpassen kann ohne immer den code umschreiben zu muessen.
VIELEN VIELEN DANK schon mal fuer alle Vorschlaege und Tipps!
3 Antworten
Färben ist nicht gut, wenn mehrere übereinstimmen können: Du kommst schnell in einen Urwald gefärbter Zellen.
Das Blatt heisse in beiden Dateien Blatt1
Setze in Data2 in M2 diese Formel:
=Wennfehler(Vergleich(G2;[Data1]Blatt1!F:F;0);"☻")
Diese Formel liefert die Zeile, in der das Original in Data1 steht. Runterziehen. (nehmen wir an es handle sich um Produktnummern, recht unanschaulich. Aber in Data1 Spalte A stehe der Name des Produkts. Dann in Spalte Data2 N2:
=Wennfehler(index([Data1]Blatt1!A:A;Vergleich(F2;[Data2]Blatt1!G:G;0);"☻")
oder kürzer mit Bezug auf die schon errechnete Spalte M:
=Wennfehler(index([Data1]Blatt1!A:A;M2;0);"☻")
und Du weißt sofort, um was es sich handelt.
Rückwärts geht das auch (beantwortet: wo steht denn das Doppel in Data2?):
in [Data1]Blatt1!P2: =Wennfehler(Vergleich(Zeile();[Data2]Blatt1!M:M;0);"✗")
auch das runterziehen.
Es kann nur jeweils EIN Doppel erkannt werden, die Formel findet immer nur das erste.
Hab das jetzt nicht getestet, wenn Du damit nicht klarkommst melde Dich nochmal.
wenn Du das ausprobierst, musst Du Data1 natürlich mit Erweiterung schreiben, also Data1.xls, .xlsx oder .xlsm. Ebenso mit Data2
Egal, obs funktioniert, eine Rückmeldung wäre hilfreich!
Wenn ich ein Kreuzworträtsel löse, weiß ich am Ende, obs aufgeht. Hier weiß ich ohne Rückmeldung gar nichts. Also Leute, gebt Rückmeldung! (am liebsten natürlich mit einer Hilfreichsten!)
Danke dir viiielmals! Wollte es mit einem Makro loesen damit es "bequemer" ist nach dem man es einmal erstellt hat.
Diese Loesung jedoch funktioniert genau so gut und nimmt mir arbeit von mehreren Stunden weg - vielen dank dafuer nochmal!
gern geschehen und danke für den ★ ! (ist das einzige, was zur Erhaltung des xpert-Status hilft!)
Ich habe ein bisschen herumgetüftelt. Es ist mit VBA schon umsetzbar, auch die Angabe der zu vergleichenden Spalten. Etwas tricky allerdings schon, weil beim Zugriff auf die andere Datei einige normalerweise unproblematische Funktionen wie range Ärger machen. (warum weiß ich noch nicht)
Mein Fazit: Wenn es sich um eine einmalige Aktion handelt, sind die beschriebenen Tipps mit normalen Formel wesentlich einfacher als extra ein Makro zu stricken. Wenn es flexibles Makro sein soll, macht es eigentlich keinen Sinn, das dann fest mit den beiden Dateien zu verdrahten. Man müsste sich eher die Arbeit machen und eine Art Addin schreiben, komplett mit Auswahldialogen, welche Dateien und welche Spalten geprüft werden sollen und auch, was mit den Duplikaten passieren soll. Das ist dann aber richtig Arbeit.
Genau das wollte ich eigentlich aber habe auch mit einem Kollegen gesprochen der in Sachen Makros fitter ist als ich (nicht sonderlich schwer) und auch er meinte es waere eine MENGE Arbeit.
Da es nicht einmalig waere probiere ich es dennoch mal von Zeit zu Zeit irgendwie ein Makro zu schreiben aber es klappt fuers erste auch super mit euren Tipps danke euch!!!
Soll es wirklich unbedingt in VBA sein?
Geht doch direkt in EXCEL auch ganz einfach mit der Funktion ZÄHLENWENN.
echt ganz einfach? dann zeigs uns mal.
mit VBA ist es zwar nicht sehr schwer - wenn mans kann - aber doch ein bisserl arbeit.
Die Idee ist nicht schlecht, nur mit Zählenwenn kann man halt nicht sagen, wo und deshalb nicht markieren.
Ich arbeite viel mit zählenwenn, deshalb finde ich es einfach ;-)
1. Hilfsspalte einfügen neben deiner Spalte F.
In der Hilfsspalte, Zeile2 diese Formel eingeben: =ZÄHLENWENN(Data2!G:G;F2)
Ergebnis ist die Anzahl, wie oft F2 in Tabelle Data2, Spalte G vorkommt. Ergebnis 0 heißt, F2 kommt da nicht vor.
Diese Formel runterkopieren (Doppelklick auf die rechte untere Ecke) und neuberechnen.
Jetzt steht in der Hilfsspalte für jeden Wert aus Spalte F, ob der auch Spalte G vorkommt.
2. Dasselbe in Tabelle Data2 mit Spalte G machen: =ZÄHLENWENN(Data1!F:F;G2)
3. Mit bedingter Formatierung die Zellen gelb färben, wo der Wert in der Hilfsspalte >0 ist
Viel Erfolg!
Ich hatte es so verstanden, dass es zwei getrennte Dateien nicht, nicht nur unterschiedliche Tabellenblätter. Trotzdem würde das Vorgehen auch bei getrennten Dateien funktionieren, solange beide gleichzeitig geöffnet sind. Dann müsste man die Hilfsspalte allerdings kopieren und als Werte einfügen, um die Ergebnisse beizubehalten.
Ich danke euch allen vielmals fuer eure Muehe!! Es nimmt mir eine Menge Arbeit ab mit den "normalen" Formeln. Wie oben schon kommentiert wollte ich es noch bequemer (allerdings kann man nicht alles haben und etwas muss ich ja auch alleine machen :)) ich probiere mich einfach mal nebenher in meiner Freizeit da rum mit dem Makro aber fuer meinen Hauptzweck habt ihr mir wirklich sehr geholfen danke euch!!
Die zweite Formel stimmt nicht. Formel in Data2, N2 muss heissen:
=Wennfehler(index([Data1]Blatt1!A:A;Vergleich(G2;[Data1]Blatt1!F:F;0));"☻")
die kürzere Formel stimmt dann wieder, ebenso die letzte