![]() |
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 SelectionWas 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 SubDas Makro sucht für jede Zeile >2 in Tabelle1 die Entsprechende Sales Person in Tabelle2 und trägt sie in Tabelle1 ein.
![]() ![]() |
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
![]() |