Efficienter maken van Do Until..Loop Statement

Status
Niet open voor verdere reacties.

Chicky87

Gebruiker
Lid geworden
29 jul 2008
Berichten
14
Hallo,

Ik heb een Loopje in een Excel-macro staan die bepaalde leveranciersgegevens kopiëerd naar een andere sheet wanneer de leveranciersnummers matchen. Deze ziet er als volgt uit:

Sub LookupSupplierData(i)
a = 6
Do Until Trim(Left(Sheets("Supplier List").Cells(a, 1), 1)) = "" Or Trim(Left(Sheets("Supplier List").Cells(a, 1), 6)) = Trim(Left(Sheets("data").Cells(i, 12), 6))
a = a + 1
Loop
Sheets("data").Cells(i, 14) = Sheets("Supplier List").Cells(a, 17) 'Currency
Sheets("data").Cells(i, 15) = Sheets("Supplier List").Cells(a, 15) 'Delivery Condition
End Sub



De Sub werkt perfect, alleen hij is ontzettend traag! Het duurt enorm lang, aangezien zowel de data-sheet (bestemming van de gegevens) als de input sheet met het leveranciersoverzicht ongeveer 2000 regels bevat (Hij gaat bij iedere regel van de data-sheet de hele leverancierslijst af tot hij het juiste nummer vindt). :confused:

Heeft iemand enig idee hoe dit sneller kan??

Alvast bedankt!

Groeten,

Hilde
 
Dag Hilde

Waarom geen VERT.ZOEKEN functie in Excel zelf?

Ik zou in de help files eens kijken bij Find (daarmee programmeer je eigenlijk het zoeken zoals met Ctrl-F).

Wigi
 
Je kunt eerst de sheets inlezen in het arrays. Hiermee staan alle gegevens in het geheugen. Als de loop klaar is dan kun je weer wegschrijven naar "data". Werkt een stuk sneller.

Maar zoals Wigi al aangeeft is het waarschijnlijk helemaal niet nodig om hier met VBA aan te gang te gaan.

Ron
 
Dank voor jullie reacties! :)

Een functie in Excel zelf is helaas geen optie voor mij. De tool moet echt 'Idiot Proof' zijn, en er hangt inmiddels een hele lijst aan Macro's onder, waardoor met één druk op de knop de hele zaak ge-update wordt.

De Find Methode in VBA klinkt toepasselijk, alleen krijg ik hem nog niet werkend. Ik moet namelijk als uitkomst van Find, het rijnummer krijgen. Het zal dus een combinatie moeten zijn van Find en Row, denk ik? (zoals je ziet ben ik geen prof :eek:)

Of is de oplossing van Ron beter en efficienter? Ik weet ook niet hoe het er dan uit moet zien. Heb je misschien een klein voorbeeldje?

Groeten,

Hilde
 
Heren,

Het probleem is inmiddels opgelost met een Find en een Row.
Het scheelt een hoop tijd! Bedankt! :thumb:
 
Heren,

Het probleem is inmiddels opgelost met een Find en een Row.
Het scheelt een hoop tijd! Bedankt! :thumb:

Graag gedaan.

Problemen die je zelf voor het grootste stuk hebt opgelost geven het meeste voldoening :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan