Jeg har et Excel-sheet omfattende 65.000 rækker og 15 kolonner. I alle celler skal jeg udskifte punktum med komma i talserier:
Før: 0.03 Nu: 0,03 Før: -1.09 Nu: -1,09
Det ser ud som om, at min kode kører længere i søgningen efter punktummer end række 60.000 - og det tager derfor meget lang tid at eksekvere programmet.
Kan jeg skrive koden på anden vis, så hastigheden i programmet øges markant?
På forhånd mange tak for jeres hjælp. /Arne
Koden ser således ud:
Sub AFKAST_test()
Windows("2811_All").Activate
ActiveSheet.Range("F1").Activate
Selection.NumberFormat = "@"
Dim OriginalText As String Dim CorrectedText As String
Den arbejder faktisk kun til sidste række i dine data: Lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Udfordringen kan så være hvis der er tastet noget i række 60.000 eller du har tidligere haft noget der. Jeg har også set eksempler på mærkelige tegn som egentlig ligner mellemrum og lignende.
prøv at slette alle rækker under den sidste række du mener der bør være (brugt ctrl + shift + pil ned) og kør den igen derefter.
Alternativt tænker jeg helt simpelt er det ikke blot en søg og erstat - eller er der mere du ikke har nævnt for os.
Alt, hvad min kode skal gøre, er vist i mit oprindelige spørgsmål, hvor koden var sat ind. Det er en ganske simpel udskiftning af punktummer med kommaer. Koden er "skrevet" ud fra en optaget makro. Selvfølgelig sker der noget før og efter programstumpen, men det vedrører ikke det med at udskifte punktummer med kommaer
Jeg har prøvet dit forslag med at slette alle rækker efter sidste datarække, men det har ikke sat hastigheden på programeksekveringen op. Dernæst prøvede jeg at kopiere alle data ud i en ny Excel-fil. Hastigheden her var ca. 11 minutter, hvor 1.169.000 celler blev løbet igennem og rettet mht. punktum til komma. Måske kan jeg ikke forvente, at programmet kører hurtigere, med tanke på de mange celler?
Jeg har fundet ud af, at en lille, simpel kodestump kunne løse mit problem med den langsommelige eksekvering af programmet:
Lige efter Sub () skrev jeg: Application.Calculation = xlCalculationManual
Lige før End Sub skrev jeg: Application.Calculation = xlCalculationAutomatic
Nu er de 11 minutter i den oprindelige eksekvering reduceret til 1½ minut. Det er lige til at leve med! Løsningen er efterprøvet flere gange, og den holder.
Jeg troede, at det kunne løses med: Application.ScreenUpdating = False / True, men det gjorde ingen forskel.
Mange tak for jeres bidrag.
Hilsen Arne
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.