• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

=als formule in VBA?

Status
Niet open voor verdere reacties.
Zijn die formules überhaupt nodig ?
Met een filter kun je toch alle records met 1, 10 of 30 fillteren ?
 
HSV, je hebt gelijk de 2e enable moest true zijn :eek:
Ik kijk er anders vanavond nog een keer naar.
@cow18,
We hebben niets meer gezien.
Ook als je tweede 'enable' gewijzigd wordt in 'true' én de andere fout er uit is gehaald (je weet inmiddels welke neem ik aan) verdient jouw macro qua snelheid niet de voorkeur. Voor de reden: zie mijn opmerking "En verder..." in bericht #11. Niettemin is er wel een nog snellere oplossing denkbaar, o.a. snb zal wel kunnen vertellen welke.
 
Zapatr, een mens mag al eens een grapje maken de laatste dag van het jaar.

Als je 143.000 rijen aanneemt als startgegeven, maal 7 kolommen, dan is dit de vraag van 1 miljoen.
1.000 loops met de formules zoals eerst aangegeven = 9,182 sec
1.000 loops met mijn macro = 0,291 sec, als je alle 143.000 rijen in 1 keer verandert dan is dat 2.472 sec
10 (!) Zaptr-loops = 2,472 sec
Doe bovenstaande een aantal keer, die tijden veranderen wel, maar de grootte-orde en de onderlinge verhoudingen blijven gelijk.

In bijlage staan er 3 macros, Zaptr, Bart en MetFormules
Ik heb niets meer aan mijn macro gewijzigd, aan het resultaat verandert die eigenlijk niets.
Bovendien begrijp ik niet als in jouw macro, de grote spelbreker is daar telkens dat ganse blok leegmaken, tijdsverlies toch.

O, ja, ik mocht SjonR ook niet vergeten.

Als je het mij vraagt, hou het bij de formules en kijk wat er eigenlijk de oorzaak is van de vertragingen (zoals hoger gesteld : voorwaardelijke opmaak, matrixformules, .... ?)
 

Bijlagen

  • TEST (3).xlsm
    36,5 KB · Weergaven: 22
Laatst bewerkt:
terwijl we toch bezig zijn, dan gaan we Zapatr's macro tot het uiterste belasten door toevoeging van die rode regel.
maakt 38 sec voor 10 loops:eek:
Code:
Sub Zapatr()
    Dim rij    As Long

    eOff
    arr = Array(1, 10, 20, 30, 5, 15, 25, 35, 2, 12, 22)
    alles_leegmaken
    loops = 10

    With Sheets("Zapatr")
        .Cells(143000, 8) = "x"
        [COLOR="#FF0000"].Range("G1").Resize(143000).Value = 10[/COLOR]
        Application.Goto .Range("A1")
        d1 = Microtimer
        d2 = Now
        eOn
        For i = 1 To loops
            If i Mod 10 = 0 Then Application.StatusBar = "Bezig met Zapatr " & i
            rij = 1 + Rnd * 143000
            x = rij Mod 10
            y = arr(x)
            .Range("G" & rij).Value = y
        Next
    End With
    MsgBox "tijd voor " & loops & " Zapatr-loops" & vbLf & Format(Microtimer - d1, "0.0000") & vbLf & Format((Now - d2) * 3600 * 24, "0.0000")
    Application.StatusBar = False
End Sub
 
Laatst bewerkt:
Ik weet niet wat de snelheid van een filter is.
Deze zou het ook moeten kunnen.
Code:
Sub Fltr()
  With Range("C7:P" & Cells(Rows.Count, 3).End(xlUp).Row)
    .AutoFilter 5, Array("1", "10", "30"), 7
    .Offset(, 7).Resize(, 7) = "x"
    .AutoFilter
  End With
End Sub
 
4,3 sec voor 10 loops
 

Bijlagen

  • TEST (3).xlsm
    37,9 KB · Weergaven: 21
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan