macro's sneller laten ratelen

Status
Niet open voor verdere reacties.

dopoog

Gebruiker
Lid geworden
9 aug 2010
Berichten
35
Hey,

Ik ben de afgelopen dagen druk bezig geweest met het maken van macro's.
Sommige macro's worden heel traag uitgevoerd. Terwijl er relatief weinig acties ondernomen hoeven te worden.

Een voorbeeld is, na voorwaardelijke opmaak -> dubbele waardes een keur geven.
Als je vervolgens via autofilter gaat sorteren op kleur duurt dit heel lang.

Hebben jullie tips om macro's sneller te laten werken?
 
Macro's die veel aan schermwijzigingen doen kosten juist veel tijd door de scherm updates. Zet dit daarom uit aan het begin van de macro met:
Application.ScreenUpdating = False

Aan het einde van de macro zet je dat dan weer aan:
Application.ScreenUpdating = True
 
Hoi bedankt voor je snelle reactie.
Dit had ik er ook al ingezet! Scheelt zeker een 10 / 20 seconden!!

Maar voor mijn gevoel duurt het nog lang voordat hij klaar is. (zandloper blijft staan).
 
Maak een voorbeeldje, want zonder code kunnen we uiteraard nooit zien waar de vertraging zit. Hooguit speculeren, en dat kun je toch veel beter op de beurs doen...
 
Excel heeft ingebouwd een 'verwijder duplicaten' funktie. Als je die gebruikt hoeft er niet gekleurd, noch gefilterd te worden.
 
Jawel, want de duplicaten moeten niet verwijderd worden, maar die moeten juist zichtbaar worden gemaakt!
De niet duplicaten mogen wel verwijderd worden.

PS: er zit een spelfout in je handschrift (verwijdeerd) :)
 
Laatst bewerkt:
Ook dan hoeft er niets gekleurd of gefilterd te worden.

Code:
Sub M_snb()
    [A1:A1000] = [if(A1:A1000="","",if(countif($A$1:$A$1000,A1:A1000)=1,"",A1:A1000))]
    Columns(1).SpecialCells(4).EntireRow.Delete
End Sub

Ps. Typefout verwijderd (dankjewel !)
 
Hierbij loopt hij ook vast!

Ik kan denk ik dan nog beter eerst filteren van hoog naar laag
en dan als A2-A1 <>0 dan remove?
 
De macro moet natuurlijk wel in de codemodule staan van de sheet waarop de code van toepassing is.
En het werkblad moet niet beveiligd zijn...., en er moet geen samengevoegde cellen bevatten.... etc.

Maar dat staat vast wel in je basisboek VBA.
 
Laatst bewerkt:
snb,

werkblad is niet beveiligd;
werkblad is geactiveerd;
geen samengevoegde cellen;
geen verborgen kolommen/rijen etc.

ik werk met excel 2013!! Ik snap niet waarom hij vastloopt. Het zijn wel 350.000 rijen.. maar dat moet kunnen lijkt me...
 
Je link in Post#5 werkt niet.
 
Er is een llimiet aan het aantal areas (niet-aaneengesloten gebieden)
Test eerst eens met 1000, en dan geleidelijk oplopend.
 
ja, dan schiet het dus niet op :) Hoe kan ik anders data van 300.000 tot 1.000.000 filteren???
 
Filteren doe je met autofilter of uitgebreid filter en dan kopieer je de rijen die aan de voorwaarde voldoen. Dan hoef je niets te kleuren en niets te verwijderen.
 
En hoe geef je dan (in een cel; want dat doe je met uitgebr. filter) de voorwaarde mee dat hij dubbele waarden filtert??
 
Maak een extra kolom.

Zet daarin de formule om te bepalen of een record uniek is. uniek = 1, niet-uniek =""
Sorteer op die kolom.
Alle rijen met 1 in deze kolom kunnen geselecteerd worden en verwijderd.
 
Laatst bewerkt:
Ja dat je dat met een 1 en een 0 kunt doen weet ik.
Maar het ging me meer om de formule; hoe je checkt of 1 waarde uniek is?
 
In B1 en verder naar beneden doortrekken.
Dubbel of meer geeft 0, uniek geeft 1.
Code:
=ALS(AANTAL.ALS($A:$A;A1) > 1;0;1)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan