online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Kalmi vom 28.12.2019, 18:09 Options

sverweis oder vba

Hallo an alle,
ich habe ein Blatt "Stammdaten" in dem alle Daten gesammelt sind. Nunmöchte ich in einer separaten Tabelle nach Eingabe der Artikel-Nr. die Bezeichnung, Preis usw. erscheint. Ich spreche hier von ca. 2000 Artikeln, also jede Menge "sverweise". Mit "sverweis" ist das kein Problem, nur ich finde, zu viele "sverweise" machen die Datei langsam, deshalb meine Frage, geht es per vba vielleicht schneller? Wenn ja, gibt es vielleicht schon Vorlagen oder Beispiele die man verwenden könnte?
Mit dem "Macrorecorder" habe ich schon experimentiert, doch leider mache ich da was falsch, der Erfolg bleibt aus.
Vielleicht interessiert jemand, wie ich meinen Befehl geschrieben habe:
SVERWEIS(A4;Stamm!$K:$L;2;0)
Diesen Befehl hätte ich dann für jede, benötigte Information eingegeben.
Vielleicht hat aber jemand eine bessere Idee.
Vielen Dank schon mal.
Gruß
Karlheinz


Antwort schreiben

Antwort 1 von rainberg vom 28.12.2019, 19:10 Options

HalloKarl-Heinz,

Du kannst auch in VBA mit der Worksheetfunction Vlookup (entspricht SVERWEIS() )arbeiten.
Ein Makro auf Deine Angaben zugeschnitten, könnte so aussehen.


Option Explicit

Sub Preis_holen()
   Dim ws1 As Worksheet, ws2 As Worksheet
   Dim intI As Integer
   Set ws1 = Worksheets("Stamm")
   Set ws2 = Worksheets("Auswertung")
   Application.ScreenUpdating = False
   For intI = 4 To ws2.Range("A65536").End(xlUp).Row
      ws2.Cells(intI, 2).Value = _
      WorksheetFunction.VLookup(ws2.Cells(intI, 1), ws1.Range("K:L"), 2, 0)
   Next
   Application.ScreenUpdating = True
End Sub


Habe die Testdatei hier verlinkt.

http://www.netupload.de/detail.php?img=ad3fbd0ae1cc426ac447ce9c878b...

Gruß
Rainer

Antwort 2 von Kalmi vom 28.12.2019, 19:51 Options

Hallo Rainer,
vielen Dank für deinen schnellen Vorschlag, funktioniert super. Nur für meine speziellen Zwecke, wäre es wichtig, dass nach jeder Eingabe einer Artikel-Nr. die jeweiligen Daten erscheinen. Dies dient der Kontrolle. Das ganze läuft auf eine Art Inventur ab. Kann man dies in deinem Vorschlag einbinden? Das wäre super, weil ich habe schon Versuche gemacht, mehrere Daten anzeigen zu lassen und siehe da, es klappt wunderbar, obwohl ich null Ahnung von vba habe. Sowas gefällt mir sehr.
Gruß
Karlheinz

Antwort 3 von rainberg vom 28.12.2019, 20:06 Options

Hallo Karl-Heinz,

anbei das geänderte Makro und die Testdatei

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim ws1 As Worksheet
   Set ws1 = Worksheets("Stamm")
   If Not Intersect(Target, Range("A:A")) Is Nothing Then
      Target.Offset(0, 1).Value = _
      WorksheetFunction.VLookup(Target.Value, ws1.Range("K:L"), 2, 0)
   End If
End Sub

http://www.netupload.de/detail.php?img=69e902d16b661a11a52d14191346...

Gruß
Rainer

Antwort 4 von Kalmi vom 28.12.2019, 21:12 Options

Hallo Rainer,
du bist der Größte. Jetzt funktioniert es genau so, wie ich es haben wollte. Vielen, vielen DANK.
Ich wünsche dir und deiner Familie einen guten Rutsch ins neue Jahr.
Viele Grüße aus Bayern
Karlheinz

Antwort 5 von Kalmi vom 29.12.2019, 22:22 Options

Hallo Rainer,
jetzt habe ich das nächste Problem, wenn ich die Daten, die automatisch hinzu gefügt worden sind, löschen will, geht er in den DEBUGGEN-Modus, wenn ich dann auf ABBRECHEN klicke, werden viele Zellen ausgefüllt mit #NV, die ich wieder löschen kann. Kann man den DEBUGGEN-Modus verhindern oder eine Option einbauen, daß man bestimmte Zellen bzw. Zeilen löschen kann? Ich weiß, ich bin nervig, doch an wen soll ich mich sonst richten, für dieses Problem gibt es bestimmt keinen anderen, der sich damit auskennt.
Grüße aus Bayern
Karlheinz

Antwort 6 von rainberg vom 30.12.2019, 00:07 Options

Hallo Karlheinz,

Zitat:
du bist der Größte

... das möchte ich mit Nachdruck zurück weisen.

Zitat:
Ich weiß, ich bin nervig

... nervig bist Du mit Sicherheit nicht, denn Foren sind zum Fragen da.

Zitat:
...für dieses Problem gibt es bestimmt keinen anderen, der sich damit auskennt.

... mit solchen Aussagen solltest Du vorsichtig sein, andere Hilfswillige könntest Du damit beleidigen.

Nun zum Problem, probier's mal damit.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws1 As Worksheet
    Set ws1 = Worksheets("Stamm")
    On Error Resume Next
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        If Target.Value = "" Then Exit Sub
        Target.Offset(0, 1).Value = _
        WorksheetFunction.VLookup(Target.Value, ws1.Range("K:L"), 2, 0)
    End If
End Sub
[/quote]

Gruß
Rainer[/quote]

Antwort 7 von Kalmi vom 30.12.2019, 10:24 Options

Hallo Rainer,
es liegt mir fern jemand zu beleidigen, ich dachte nur, ein Außenstehender weiß ja nicht alle Vorgänge somit der Gesamt-Überblick. Es war bestimmt nicht böse gemeint. Ich bin ja froh, wenn ich Hilfe bekomme.
Vielen Dank für die schnelle Hilfe, ich habe es getestet und es funktioniert, klasse. Vielen vielen Dank.
Gruß
Karlheinz

Antwort 8 von geek vom 14.04.2020, 01:19 Options

Hallo,

ich stehe vor demselben Problem. Leider funktionieren die Links zu den Testdateien nicht mehr.

Ich wäre euch sehr dankbar, wenn Ihr uns die Testdatei noch mal zur Verfügung stellen könntet.

Mit freundlichen Grüßen

geek

Antwort 9 von rainberg vom 14.04.2020, 13:46 Options

Hallo geek,

tut mit Leid, aber ich lösche alle selbst erstellten Testdateien von meinem Rechner, sobald das Problem des Fragestellers gelöst ist.

Eröffne doch bitte eine eigenen Thread mit unmissverständlicher Fragestellung oder einer Beispiel Deinerseits.

Gruss
Rainer

Antwort 10 von geek vom 14.04.2020, 23:55 Options

Hallo Rainberg,

leider führt die Suche bei google.de zu etlichen Seiten auf denen mein Problem geschildert, aber nicht behoben wird. Ein neuer Thread löst das Problem nicht.

Kalmi´s Anliegen trifft nun mal genau auf mich zu. Ich suche eine Beispieldatei in der eine Liste aus externen Daten (Preislisten im CSV oder Text Format) durch Eingabe der Artikelnummer Erstellt wird. Bei 60000 SVERWEISEN ist Excel 2007 nicht mehr zu gebrauchen. Deshalb suche ich nach einer Lösung in VBA, die mir die Datensätze zu der eingetragenen Artikelnummer liefert und den Wert einträgt, so dass ich mit dem Wert weiter arbeiten kann.

Ich denke mal, das Problem ist weit verbreitet. Mit einer entsprechenden Beispieldatei wäre mir und vermutlich auch vielen anderen schon geholfen, da mir der Umgang mit VBA sehr schwer fällt. Das Muster soll eine Hilfestellung sein, um zu sehen wie es auszusehen hat damit es überhaupt irgendwie funktioniert.


Folgende Dateien kommen bei mir dabei zum Einsatz:

- Preisliste vom Lieferanten (Quelldaten - wahlweise mit und ohne Spaltenüberschrift)

- Preisliste vom Shop-System mit vorgegebenen Spaltenüberschriften (soll per VBA mit den Daten aus der Quelldatei gefüllt werden)

- Kategorie-Produktzuweisung vom Shop-System (hierfür werden die Werte Der Spalte ‚ID‘ aus der Preisliste vom Shop-System benötigt, um die Produktzuweisung zur entsprechenden Kategorie zu realisieren.)


Mein SVERWEIS:
=WENN(ISTFEHLER(SVERWEIS('Preisliste\SVERWEIS\[Kategorie Produktzuweisung.csv]Kategorie Produktzuweisung'!B3;'Preisliste\SVERWEIS\[Quelldaten.csv]Quelldaten'!$1:$1048576;31;FALSCH));"";SVERWEIS('Preisliste\SVERWEIS\[Kategorie Produktzuweisung.csv]Kategorie Produktzuweisung'!B3;'Preisliste\SVERWEIS\[Quelldaten.csv]Quelldaten'!$1:$1048576;31;FALSCH))



Hoffentlich habe ich nix vergessen und es kann jemand helfen.


Vielen Dank schon mal!

Mit freundlichen Grüßen,
geek

Antwort 11 von rainberg vom 15.04.2020, 07:18 Options

Hallo geek,

Zitat:
Ein neuer Thread löst das Problem nicht.


...... ist aber erforderlich, da der alte Thread bereits abgeschlossen war und neue Fragen in neue Threads gehören.

Sicher ist auch Dein Problem per VBA lösbar, aber nicht jeder hat Lust und Zeit irgendwelche Testdateien zu simulieren um das Makro auch testen zu können.

Im Übrigen handelt es sich bei Dir um eien SVERWEIS zwischen mehreren Mappen, während obiger SVERWEIS nur mehrere Arbeitsblätter betrifft.

Gruss
Rainer

Antwort 12 von geek vom 15.04.2020, 07:22 Options

jo passt schon..
noch klarer kann ich mich nicht ausdrücken..

tschö

Ähnliche Themen

Sverweis
RonaldoHH  16.02.2007 - 109 Hits - 2 Antworten

Sverweis und Sortieren über VBA ?????
Gast-Fragender  06.12.2007 - 163 Hits - 7 Antworten

Sverweis starten, wenn Eingabetaste betätigt wird
egon1967  22.01.2008 - 134 Hits - 10 Antworten

sverweis mit vba
Kalmi  15.02.2008 - 198 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026