Office: VBA schneller SVERWEIS

Helfe beim Thema VBA schneller SVERWEIS in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zuasmmen, Folgende Problem: Tabellen1 A1:A100 stehen verschiedene Werte die Werte kommen nicht doppelt vor. Tabelle2 A1:B100 stehen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von gook, 4. Juni 2010.

  1. gook Erfahrener User

    VBA schneller SVERWEIS


    Hallo zuasmmen,

    Folgende Problem:

    Tabellen1 A1:A100 stehen verschiedene Werte die Werte kommen nicht doppelt vor.

    Tabelle2 A1:B100 stehen verschiedene Werte.

    SO:

    Ich brauche das unbedingt in VBA und zwar am besten keine for Next schleife weil es in Wirklichkeit viel mehr Zeilen und Spalten sind.

    Alle Werte aus Tabelle1 A1:a100 sollen mit Tabelle2 A1:A100 verglichen werden kommt ein Wert in Tabelle1 Spalte A auch in Tabelle2 SpalteA vor so soll in Tabelle1 zeile X der Wert von Tabelle2 Spalte B übertragen werden.

    Hm hoffe ich habe mich eingermaßen verständlich ausgedrückt.
    Falls nicht hänge ich schnell ne BspD. an.

    Gruß
     
  2. racoon0506 Erfahrener User
    aus der Excel 2007-Hilfefunktion: "Vertikales/Horizontals Suchen von Werten mit Hilfe einer Liste mit genau einer Übereinstimmung"
    Zugehörig sind dazu die Funktionen SVerweis und WVerweis.

    Wenn das Ganze über VBA gelöst werden soll, bleibt einem nur die Möglichkeit, über eine Schleife alle notwendigen Zellen zu durchlaufen.
    Ob das nun über For-Next oder Do-Loop oder gar While konstruiert wird, spielt dabei eher eine untergeordnete Rolle und hängt davon ab, wann eine Bedingung geprüft werden soll.
     
    racoon0506, 5. Juni 2010
    #2
  3. gook Erfahrener User
    Hallo danke für deine Antwort,

    ich dachte eher an an so was

    Code:
    Cells.Replace What:="1", Replacement:="2", LookAt:=xlPart,[/quote]
    
    was wäre den die schnellste VBA SChleifen Lösung?
     
  4. Thomas Ramel MVP für Microsoft Excel

    VBA schneller SVERWEIS

    Grüezi Gook

    Schneller als ein SVERWEIS() wirst Du mit VBA wohl kaum etwas hinkriegen....

    Desen kannst Du ja auch in VBA verwenden und dann das Ergebnis in die betreffende Zelle schreiben lassen.
     
    Thomas Ramel, 6. Juni 2010
    #4
  5. gook Erfahrener User
    Hallo Thomas,

    ok mir ist klar der SVERWEIS sehr schnell ist.

    Wie sollte ich ihn dann in VBA verwenden mit Application.WorksheetFunction.... ???
    Für ein anderes Project habe ich folgenden Code Verwenden diese war ca 10-15 mal schneller als mein SVERWEIS Formellösung.


    Code:
    
    Dim MyDic As Object
    Dim Matrix As Variant
    Dim Suchkriterium As Variant
    Dim L As Long
    Dim Ausgabe As Variant
    Set MyDic = CreateObject("Scripting.Dictionary") 'Verweis auf das Dictionary Object setzen
    Matrix = Sheets("Artikelspa").Range("A:D") 'Wie in der Tabellenfunktion =Sverweis(). Anpassen
    Suchkriterium = Sheets("Artikelstamm").Range("A1:A50000") 'Hier werden deine Suchkriterien angegeben. Anpassen.
    For L = 1 To UBound(Matrix)
        MyDic(Matrix(L, 1)) = Array(Matrix(L, 2), Matrix(L, 3))
        '_________________________Spaltenindex2_Spaltenindex3_Spaltenindex4_Spaltenindex5
    Next
    ReDim Ausgabe(1 To UBound(Suchkriterium), 1 To 5) 'Ausgabe Array dimensionieren
    'Genauso viele Zeilen wie Suchkriterien, 5 Spalten.
    On Error Resume Next
    For L = 1 To UBound(Suchkriterium)
        Ausgabe(L, 1) = Suchkriterium(L, 1)
        Ausgabe(L, 2) = MyDic(Suchkriterium(L, 1))(0)
        Ausgabe(L, 3) = MyDic(Suchkriterium(L, 1))(1)
        Ausgabe(L, 4) = MyDic(Suchkriterium(L, 1))(2)
        Ausgabe(L, 5) = MyDic(Suchkriterium(L, 1))(3)
    Next
    Sheets("Artikelstamm").Range("K1").Resize(UBound(Suchkriterium), 5) = Ausgabe 'Hier werden die Ergebnisse ausgegeben.Anpassen.

    Deswegen meine Frage nach einer schnellen VBA lösung.

    Vielen dank für deine Antwort!

    Gruß
     
  6. miriki Erfahrener User
    Eine vielleicht nicht ganz saubere, aber durchaus schnell funktionierende Möglichkeit:

    Setze mit
    Code:
    range("b1").formulalocal="=sverweis(a1;$y$1:$z$100;2;falsch)"
    eine Formel in die oberste Zelle. Dann nimm diese Zelle und kopiere sie mit
    Code:
    range("b1").copy destination:=range("b2:b100")
    auf die restlichen Zellen der Spalte. Und ggf. als krönenden Abschluß kannst Du noch die Formeln durch Werte ersetzen, um Neuberechnungen zu verhindern:
    Code:
    range("b1:b100").copy
    range("b1:b100").pastespecial paste:=xlpastevalues
    Sonst bleibt Dir eigentlich nur die Schleife mit application.worksheetfunction, ja...

    Gruß, Michael
     
    miriki, 8. Juni 2010
    #6
Thema:

VBA schneller SVERWEIS

Die Seite wird geladen...
  1. VBA schneller SVERWEIS - Similar Threads - VBA schneller SVERWEIS

  2. VBA in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  7. VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen

    in Microsoft Word Hilfe
    VBA: Platzhalter ersetzen und evtl. leere Zeile einfügen: Hallo zusammen, ich habe eine Word-Vorlage mit Platzhaltern, in die ich mit VBA Daten aus einer Excel-Datei einfüge (in eine Excel-Zeile schreibe ich alle Daten für ein neues Word-Dokument). So...
  8. VBA Auswahl wird schnell wieder ausgeblendet

    in Microsoft Access Hilfe
    VBA Auswahl wird schnell wieder ausgeblendet: Guten Tag Seit kurzen wird beim Eingeben von VBA die möglichen Vorgaben nur noch kurz eingeblendet. Gehen dann aber sofort wieder weg. Wenn ich z.B. -> "me." eingeben, dann kommt üblicherweise...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden