Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1848to1852
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
Inhaltsverzeichnis

Sverweis als VBA

Sverweis als VBA
05.10.2021 16:35:32
Georg
Hallo zusammen,
ich habe auf meiner Arbeit zwei relativ große Excel Dateien. Beide Dateien haben über 5000 Zeilen. Jetzt müssen aus der einen Datei Einträge in die andere Datei übertragen werden. Das haben die Mitarbeiter bisher händisch erledigt.
Da das ein riesen Zeitaufwand war die Daten immer zu übertragen habe diese Sverweis Formel erstellt die das Automatisch macht.

=WENN([@[ Datum]]="";"-";WENN(ISTNV(SVERWEIS([@[Datum]]&[@[Zeit]]&[@[Fauf]];WAHL({1.2.3};   'Dateipfad]Eingabetabelle'!$C$16:$C$10000&'Dateipfad]Eingabetabelle'!$D$16:$D$10000&'Dateipfad]Eingabetabelle'!$F$16:$F$10000;   'Dateipfad]Eingabetabelle'!$L$16:$L$10000);2;0));"-";SVERWEIS([@[Datum]]&[@[Zeit]]&[@[ Fauf]];   WAHL({1.2.3};   'Dateipfad]Eingabetabelle'!$C$16:$C$10000&'Dateipfad]Eingabetabelle'!$D$16:$D$10000&'Dateipfad]Eingabetabelle'!$F$16:$F$10000;   'Dateipfad]Eingabetabelle'!$L$16:$L$10000);2;0)))   
Die Formel vergleicht die Spalten Datum, Zeit und Fauf aus Tabelle 1 mit den Spalten C,D und F der Tabelle 2 und wenn die 3 gleich sind schreibt den Wert aus Spalte L in die Zeile. Wenn es keine Übereinstimmung oder die Zeile in der Spalte Datum leer ist, trägt sie ein - ein.
Diese Formel ist jetzt natürlich sehr Ressourcen hungrig.
Kann man das ganze als VBA machen so das die 3 Spalten verglichen werden und entweder der Wert oder das - eingetragen werden. Des Weiteren wäre es hilfreich wenn die Formel nur die Zeilen ohne Eintragung vergleicht.
Ich kenne mich ein wenig mit VBA aus, dabei bin ich aber überfragt. Für Hilfe wäre ich sehr dankbar.
Wenn der Code zum besseren Verständnis zusätzlich mit Kommentaren zur Funktion versehen wäre, wäre das ein Traum!
Vielen Dank schonmal für eure Hilfe.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis als VBA
05.10.2021 17:18:01
onur
Könnte man garantiert, wenn man die Datei zur Verfügung häte und ganz genau wüsste, was das Makro machen soll.
Vergiss VBA :-)
05.10.2021 19:07:38
Yal
Hallo Georg,
dein Problem scheint besonders passsend, um -sehr schlank- mit Power Query behandelt zu werden.
Gebe dir bitte die Mühe eine anonymisierte Beispieldatei zu erzeugen, dann bekommst Du eine Lösung ohne VBA und ohne Formeln.
Dein Formel:

=WENN(
[@[ Datum]]="";
WENN(
ISTNV(
SVERWEIS(
[@[Datum]]&[@[Zeit]]&[@[Fauf]];
WAHL(
{1.2.3};
'Dateipfad]Eingabetabelle'!$C$16:$C$10000&'Dateipfad]Eingabetabelle'!$D$16:$D$10000&'Dateipfad]Eingabetabelle'!$F$16:$F$10000;
'Dateipfad]Eingabetabelle'!$L$16:$L$10000
)
;2;0
)
)
;SVERWEIS(
[@[Datum]]&[@[Zeit]]&[@[ Fauf]];
WAHL(
{1.2.3};
'Dateipfad]Eingabetabelle'!$C$16:$C$10000&'Dateipfad]Eingabetabelle'!$D$16:$D$10000&'Dateipfad]Eingabetabelle'!$F$16:$F$10000;
'Dateipfad]Eingabetabelle'!$L$16:$L$10000
)
;2;0
)
)
)
kann auch wie folgt abgekürzt werden:

=WENN(
[@[ Datum]]="";
WENNFEHLER(
SVERWEIS(
[@[Datum]]&[@[Zeit]]&[@[Fauf]];
WAHL(
{1.2.3};
'Dateipfad]Eingabetabelle'!$C$16:$C$10000&'Dateipfad]Eingabetabelle'!$D$16:$D$10000&'Dateipfad]Eingabetabelle'!$F$16:$F$10000;
'Dateipfad]Eingabetabelle'!$L$16:$L$10000
)
;2;0
)
)
)
Was schon ein bischen Perfomance dringen würde.
VG
Yal
Anzeige
AW: Vergiss VBA :-)
05.10.2021 19:09:23
onur
Hallo Yal,
Und wieso schreibst du MIR das ? :)
Gruß
Onur
ja...
06.10.2021 09:31:48
Yal
... habe leider nur zu spät meine "Misgeschickt" entdeckt. Da habe ich sofort gewusst: ich bekomme eine Rückmeldung :-)
VG
Yal
AW: Vergiss VBA :-)
06.10.2021 16:41:39
Georg
Hallo Yal,
vielen Dank schon mal für die kürzer Formel, nachdem ich die Klammer anders gesetzt habe hat sie auch ohne Probleme funktioniert!
Ich werde als nächstes zwei Beispiel Dateien erstellen, hoffentlich komme ich morgen dazu.
AW: Sverweis als VBA
05.10.2021 19:30:24
Daniel
Hi
Ja, kann man als VBA machen.
Zuerst sollte man sich aber überlegen, wie man das in Excel am besten macht.
Dann baut man diesen Weg in VBA nach (ist zumindest für VBA Anfänger der einfachste Weg, leistungsfähige Makros zu schreiben, weil man viel mit dem Recorder aufzeichnen kann)
Der beste Weg, den SVerweis zu beschleunigen ist, die Quelltabelle nach der Suchspalte zu sortieren um dann den SVerweis mit 4. Parameter = Wahr verwenden zu können, weil dieser bei großen Datenmengen um Welten schneller ist als sein "falscher" Bruder.
Da du drei Suchbegriffe hast, musst du so vorgeben:
1. in der Quelltabelle am Anfang eine zusätzliche Spalte einfügen, in welcher du die drei Suchbegriffe zu einem Wert verkettest.
2. die Quelltabelle nach dieser Spalte aufsteigend sortieren
3. in der Zieltabelle dann den SVerweis mit 4.Parameter = Wahr einfügen, hier kannst du die Verkettung der Suchbegriffe wie bisher im ersten Parameter machen.
Die erste Spalte des QuellBereichs muss die neue Spalte mit den verketteten Begriffen sein.
Dein Bisheriges Wenn(IstNV(SVerweisA());SVerweisB();SVerweisA())
Musst du dann so umsetzten:
=Wenn(SVerweis(Suchwert;BereichA;1;Wahr)=Suchwert;SVerweis(Suchwert;BereichA;Spalte;Wahr); SVerweis(Schwert;BereichB;Spalte; wahr))
Weil du beim SVerweis mit Wahr keinen Fehler bekommst, wenn der Suchbegriff nicht vorhanden ist, sondern der davor liegende Wert verwendet wird.
Dafür ist er halt um Welten schneller.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige