Keresés

Hirdetés

Új hozzászólás Aktív témák

  • DeFranco

    nagyúr

    válasz Fferi50 #32253 üzenetére

    közben kibogoztam, a do/loop felesleges volt, mert az i-j-k meghatározza az x maximumát.

    ezzel nagyon sokat gyorsult, de még mindig aránytalanul lassú volt (lássuk be 5k sort kitölteni nem nagy kaland, viszont eltartott volna legalább fél órát úgy becsültem a részeredmény alapján)

    gugliztam közben, hogy mi lehet még az ok, és valóban, mivel sok és bonyolult képlet van a munkafüzetben ezért ha azokat újraszámolja lépésenként, az megint csak rendkívül lelassítja a folyamatot.

    erre találtam ezt a párost:

    Application.Calculation = xlCalculationManual
    Application.Calculation = xlCalculationAutomatic

    így végül:

    Sub Kitolto()

    Application.Calculation = xlCalculationManual

    x = 1

    For i = 1993 To 2014
    For j = 1 To 3
    For k = 1 To 76

    Cells(x + 1, 2).Value = i
    Cells(x + 1, 3).Value = ThisWorkbook.Sheets("Valami_tábla").Cells(2, j + 1).Value
    Cells(x + 1, 4).Value = ThisWorkbook.Sheets("Valami_tábla").Cells(k + 2, 1).Value

    x = x + 1

    Next k
    Next j
    Next i

    Application.Calculation = xlCalculationAutomatic

    End Sub

    Ezzel 1-2 másodperc alatt lefutott szépen.

    egyszerű feladat, biztos meg lehetett volna oldani sokkal elegánsabban is, de egyelőre kb. 10 utasítást ismerek makróul :)

    [ Szerkesztve ]

Új hozzászólás Aktív témák