loveboat
Goto Top

Zellvergleich - von rechts bis Vorkommnis x

Vergleich zweier Tabellen, etwas speziell

Morgen,

ich möchte zwei Tabellen vergleichen.

Die eine Tabelle enthält Dateinamen (Spalte A), die andere enthält die selben Dateinamen inklusive vollständigem Pfad (ebefnalls Spalte A).
Der Vergleich sollte daher in Tabelle 2 von rechts (hinten) ausgehen und lediglich bis zum ersten Vorkommnis des Zeichens "/" durchgeführt werden; die Anzahl der Zeichen variiert nämlich.
Sodann sollten alle ohne Übereinstimmung in Tabelle2 (derjenigen mit Pfadangabe) gekennzeichnet werden.

Gibt es hierfür eine elegante Formel oder ein Makro? Jemand eine Idee?

Vielen Dank!
F.

Content-Key: 106778

Url: https://administrator.de/contentid/106778

Printed on: April 16, 2024 at 23:04 o'clock

Member: bastla
bastla Jan 22, 2009 at 09:59:53 (UTC)
Goto Top
Hallo LoveBoat!

Du könnterst das Herausfiltern des Dateinamens aus dem Pfad mit einer "Benutzerdefinierten Funktion" in VBA erledigen und dann mit einem ZÄHLENWENN die Überprüfung durchführen ...

Die "Function" in VBA:
Function DName(Pfad As String)
If InStrRev(Pfad, "\") > 0 Then  
    DName = Mid(Pfad, InStrRev(Pfad, "\") + 1)  
Else
    DName = Pfad
End If
End Function
Um diesen VBA-Code einzufügen:
  • In der Tabelle mit den Pfadnamen auf das Registerblatt mit dem Tabellennamen rechtsklicken und "Code anzeigen" wählen,
  • im darauf hin geöffneten VBA-Editor das Menü "Einfügen / Modul" verwenden, um ein neues Modul zu erstellen,
  • in das (große) Code-Fenster des Moduls den obigen Code einfügen und
  • den VBA-Editor schließen.

Wenn Du bereits Makros verwendet hast, wird in "Extras / Makro / Sicherheit" vermutlich schon die Sicherheitsstufe auf "Mittel" gesetzt sein, ansonsten müsstest Du das noch nachholen, damit das Makro auch ausgeführt werden kann. Nach dieser Änderung muss Excel beendet und neu gestartet werden.
Die Formel in Excel:
=WENN(ZÄHLENWENN(Tabelle2!$A$1:$A$300;DName(A1))=0;"X";"")
Wie ersichtlich, geht diese Formel davon aus, dass die Dateinamen in den Zellen A1:A300 der "Tabelle2" gesucht werden sollen.

Grüße
bastla
Member: LoveBoat
LoveBoat Jan 22, 2009 at 11:57:49 (UTC)
Goto Top
Mh.... So genau schreibe ich die Function rein? Unter Makro->VBA-Editor haut er mir das immer um die Ohre bzw. fragt nach einem Makro-Namen. Bin ich da an der falschen Stelle?
Member: bastla
bastla Jan 22, 2009 at 12:17:33 (UTC)
Goto Top
Hallo LoveBoat!

Und Du hast es auch so versucht wie oben unter "Um diesen VBA-Code einzufügen:" (für ein Excel 2003) beschrieben?

Grüße
bastla
Member: LoveBoat
LoveBoat Jan 22, 2009 at 14:27:23 (UTC)
Goto Top
Hallo,

also ich habe das ganze genau der Anleitung nach gemacht.

Habe eine Sache noch nicht ganz verstanden: Wenn ich ein Makro im VBA Editor bspw. in einem Modul verfasse, dann muss ich es doch auch "abfeuern", oder?
Will sagen; ich muss doch dann auch "SUB/USER FORM Ausführen (F5)" gehen, richtig?
Also wenn ich das tue, dann öffnet sich ein Fenster in dem ich ein Makro auswählen soll.

Wenn ich aber nicht auf "Ausführen" gehe, sondern die obengenannte Formel ein gebe, dann passiert auch nichts. Dazu vorallem: Wo muss die Formel rein in A1 Tabelle1 oder in A1 Tabelle2? Oder wo?

Es sind übrigens doch ein paar mehr Stellen: Tab1 hat ca 36.000 und Tab2 ca 15.000.
Member: bastla
bastla Jan 22, 2009 at 15:12:56 (UTC)
Goto Top
Hallo LoveBoat!

Der Code stellt kein zu startendes Makro dar, sondern wird als Funktion "DName()" in der Formel eingesetzt - der Aufruf erfolgt damit automatisch dann, wenn das Formelergebnis (neu) berechnet wird.

Testen kannst Du das, indem Du in eine Zelle (nicht in Spalte A) der Tabelle mit den Pfaden nur eingibst
<code type="plain>=DName(A5)
Das Ergebnis der Formel sollte dann der Teil nach dem letzten "\" im Inhalt von A5 sein.

Dazu vorallem: Wo muss die Formel rein in A1 Tabelle1 oder in A1 Tabelle2? Oder wo?
Weder noch - unter der Annahme, dass in A1 bereits der erste Dateipfad steht, war diese Formel für Tabelle1!B1 gedacht - damit soll neben der Zelle A1 ein "X" aufscheinen, wenn der aus dem Pfad extrahierte Dateiname nicht in den Zellen A1:A15000 der Tabelle 2 zu finden ist.

Wenn Deine Pfade erst ab A3 in Tabelle1 und die Dateinamen ab Zelle A4 in Tabelle2 stehen, dann eben in B3
=WENN(ZÄHLENWENN(Tabelle2!$A$4:$A$15000;DName(A3))=0;"X";"")
Grüße
bastla
Member: LoveBoat
LoveBoat Jan 28, 2009 at 10:52:27 (UTC)
Goto Top
Hallo,

Vielen Dank für deine Hilfe.
Mir ist allerdings nochein Denkfehler aufgefallen; Bevor ich diesen Vergleich zweier Listen machen kann müssen beide Listen zunäcsht auf Dubletten hin überpüft (und diese markiert) werden.
Für die Liste ohne Pfadangabe ist das kein Problem, da sich die Zellen bei doppeltem Auftreten ja zu 100% entsprechen.
Für die andere Liste ist es aber ein Problem, da sich nur die Dateinamen, nicht aber die PFade (also wieder nur bis zum ersten "\" von rechts) entsprechen.

Erst wenn ich das gemacht habe kann ich den obengenannten Vergleich beginnen.

Hast du dafür auch eine Idee?

Viele Grüße,
F.