Microsoft Excel

Herbers Excel/VBA-Archiv

Suchalgorythmus zu langsam - besser?

Betrifft: Suchalgorythmus zu langsam - besser? von: Michael Warlich
Geschrieben am: 04.08.2014 11:40:27

Hallo zusammen

Ich habe hier mal eine Datei hochgeladen die mein Problem darstellt:
https://www.herber.de/bbs/user/91871.xlsm

im VBA Code code kann man denke ich sehen was ich machen will. Ich habe Firmen mit einer PLZ. Diesen Firmen will ich mit einer Liste von PLZ und Marktsegmenten Verkäufer zuordnen.

So an sich gehts ja - aber es braucht eine halbe Ewigkeit - vor allem bei ca. 100.000 DS die das Originalfile hat.

Habt ihr eine Idee wie ich sowas besser / anders lösen kann?

Danke und LG
Michael

  

Betrifft: AW: Suchalgorythmus zu langsam - besser? von: Robert
Geschrieben am: 04.08.2014 11:55:19

Hallo Michael,

Ich muss ehrlich sagen aus deinem Code werd ich nicht schlau.
Du hast eine Liste, in denen Datensätze mit einer PLZ und einem Marktsegment stehen.
Eine Zweite Liste, in denen Verkäufer mit Marktsegment und PLZBereich von-bis stehen.

Irgendwie willst du die zusammenführen. Auf einem Extra Blatt? im Tabellenblatt1?
Bitte um Aufklärung! Ich schreib mal was, so wie ich denke dass es gemeint war und melde mich wieder.

Viele Grüße
Robert

PS: Was deinen Code killt ist die erste Schleife

For Each rng In Selection
Was hast du denn ausgewählt?


  

Betrifft: AW: Suchalgorythmus zu langsam - besser? von: Michael Warlich
Geschrieben am: 04.08.2014 12:13:47

Hallo Robert

Okay ich habe mich etwas unklar ausgedrückt - ich hatte es eilig und wollte es vor dem Essen noch posten :)
Also:
Tabelle 1 enthält die Firmen denen ein Verkäufer zugeordnet werden soll. In Spalte D steht die PLZ in Spalte F soll dann der Verkäufer eingetragen werden
Tabelle 2 enthält eine Zuordnungstabelle. Hier stehen Von - Bis PLZ Bereiche und Marktsegmente. Es kann sein, das es da überschneidungen gibt, das ist dann aber nur weil ich das zusammenkopiert habe. In Originalfile gibt es pro PLZ-Bereich nur ein Marktsegment
Also z. B.
Von PLZ 10000
bis PLZ 20000
Marktsegment A
Alle Kunden auf die diese Kriterien zutreffen (sprich wenn deren PLZ in dem Bereich liegen und die das entsprechende Marktsegmet habeN) soll der Verkäufer Musterhans 1 betreuen.

Ich hoffe ich konnte mich nun etwas klarer ausdrücken.

Was ich mit meinem Code machen will:
Ich markiere in Tabelle 1 die Firmen (spalte PLZ)
lasse den Code laufen.
Dann holt er sich alle VON-PLZ und schaut ob die aktuelle PLZ die er von den Firmen bearbeitet größer ist als die VON PLZ.
Ist das der Fall macht er das glecihe mit den bis PLZ. Wenn er hier einen Treffer findet (also die aktuelle ist größer von-plz und kleiner bis plz) vergleicht er das Marktsegement.
Hat er da einen Treffer, schreibt er es in Tabelle 1 in die entsprechende Spalte.

Kompliziert ist weiss...

Danke und LG
Michael


  

Betrifft: AW: Suchalgorythmus zu langsam - besser? von: Robert
Geschrieben am: 04.08.2014 12:08:08

Hallo Michael,

versuch mal folgendes:

Sub test()
Dim i, o As Integer
Application.ScreenUpdating = False

For i = 2 To Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For o = 2 To Tabelle2.UsedRange.SpecialCells(xlCellTypeLastCell).Row
        If Tabelle1.Cells(i, 5) = Tabelle2.Cells(o, 5) Then
            If Tabelle1.Cells(i, 4) > Tabelle2.Cells(o, 2) And Tabelle1.Cells(i, 4) < Tabelle2. _
Cells(o, 3) Then
                Tabelle1.Cells(i, 6) = Tabelle2.Cells(o, 7)
                Tabelle1.Cells(i, 7) = Tabelle2.Cells(o, 8)
                Exit For
            End If
        End If
    Next o
Next i

Application.ScreenUpdating = True
End Sub
Das Makro sucht für jede Zeile >2 in Tabelle1 die Entsprechende Sales Person in Tabelle2 und trägt sie in Tabelle1 ein.
Ich habe es so gelöst, dass auch nach der Sales Person gesucht wird, wenn bereits ein Eintrag da ist, also werden auch bestehende Einträge aktualisiert.

Viele Grüße
Robert


  

Betrifft: AW: Suchalgorythmus zu langsam - besser? von: Michael Warlich
Geschrieben am: 04.08.2014 13:17:46

Danke dir, ich verstehe den Code zwar noch ncith ganz aber ich werde noch dahintersteigen

klappen tuts :) nur mehr 10 Minuten oder so

LG
Michael


  

Betrifft: AW: Suchalgorythmus zu langsam - besser? von: Daniel
Geschrieben am: 04.08.2014 12:29:55


Hi
bei einer geschickten Anordunung der Tabelle 2 solltest du das Problem mit dem SVerweis bzw Index+Vergleich ohne Performanc-Probleme lösen können.

schau dir mal das Beispiel an, dort erkennt man auch, dass die Vorgaben in deiner Tabelle unvollständig sind.

Gruß Daniel


https://www.herber.de/bbs/user/91874.xlsm


 

Beiträge aus den Excel-Beispielen zum Thema "Suchalgorythmus zu langsam - besser?"