Avatar billede spoi Nybegynder
28. juni 2007 - 10:04 Der er 7 kommentarer og
1 løsning

langsom kode - mega langsom

Hej
Jeg håber nogen kan eller vil hjælpe
Jeg henter data fra en tekstfil
Jeg skal så fjerne en masse ektra 0'er der kommer med. Men lige den del er altså meget langsom. Det er de sidste linier i koden.
Er der nogen der kan se om det kan gøres hurtigere???

'importerer tekstfilen og sætter den ind med start i celle A2 og starter i række 2 i tekstfilen
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;H:HO-OpenSalesLines.txt", _
        Destination:=Range("A4"))
        'Destination:=Selection)
        .Name = "HO-OpenSalesLines"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlWindows
        .TextFileStartRow = 2
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
    End With
   
    ActiveSheet.QueryTables.Item(1).Refresh BackgroundQuery:=False
   
    'Sletter de første 4 tegn i kolonne C
   
    Dim MyArray As Variant
  Dim lngX As Long
  Debug.Print Now
  MyArray = Range("C4:C" & Trim(Str(ActiveSheet.Range("C65536").End(xlUp).Row)))
  For lngX = LBound(MyArray) To UBound(MyArray)
      MyArray(lngX, 1) = Right(MyArray(lngX, 1), Len(MyArray(lngX, 1)) - 4)
  Next lngX
  Range("C4:C" & Trim(Str(ActiveSheet.Range("C65536").End(xlUp).Row))) = MyArray
  Debug.Print Now
 
 
 
   
'sletter de 16 nuller
Range("D4:E4").Select
    Range(Selection, Selection.End(xlDown)).Select
  Selection.Replace What:="0000000000000000", Replacement:="", LookAt:= _
      xlPart, SearchOrder:=xlByRows, MatchCase:=False
Avatar billede kabbak Professor
28. juni 2007 - 12:04 #1
er der andet i de celler end "0000000000000000", er der tal eller tekst også ??
Avatar billede kabbak Professor
28. juni 2007 - 12:10 #2
'sletter de 16 nuller
    Dim Data As Variant
    Dim I As Long, II As Integer
    Data = Range("D4:E" & Range("E4").End(xlDown).Row)
    For I = 1 To UBound(Data, 1)
        For II = 1 To UBound(Data, 2)
            Data(I, II) = Replace(Data(I, II), "0000000000000000", "")
        Next
    Next
    Range("D4:E" & Range("E4").End(xlDown).Row) = Data
Avatar billede spoi Nybegynder
28. juni 2007 - 14:18 #3
Hmm der sker ikke noget. Den beholder alle tallene.
Ved ikke helt om det hele er en teksstreng jeg henter ind
Der står feks 240000000000000000 i d4 hvor der så skal stå 24

LN
Avatar billede kabbak Professor
28. juni 2007 - 15:26 #4
Prøv denne, men den fjerne alle nuller, så hvid der burde stå 240, vil der kun stå 24.


'sletter de 16 nuller
    Dim Data As Variant
    Dim I As Long, II As Integer
    Data = Range("D4:E" & Range("E4").End(xlDown).Row)
    For I = 1 To UBound(Data, 1)
        For II = 1 To UBound(Data, 2)
            Data(I, II) = Replace(Data(I, II), "0", "")
        Next
    Next
    Range("D4:E" & Range("E4").End(xlDown).Row) = Data
Avatar billede kabbak Professor
28. juni 2007 - 19:53 #5
hvis det er tal, så prøv

'sletter de 16 nuller
    Dim Data As Variant
    Dim I As Long, II As Integer
    Data = Range("D4:E" & Range("E4").End(xlDown).Row)
    For I = 1 To UBound(Data, 1)
        For II = 1 To UBound(Data, 2)
            Data(I, II) = Data(I, II) / 1E+16
        Next
    Next
    Range("D4:E" & Range("E4").End(xlDown).Row) = Data
Avatar billede kabbak Professor
28. juni 2007 - 19:54 #6
men det gælder kun hvis der er nuller ved alle, og kør den kun 1 gang
Avatar billede spoi Nybegynder
29. juni 2007 - 07:26 #7
ihhh det virker - den sidste. Tak mange gange
Læg et svar
LN
Avatar billede kabbak Professor
29. juni 2007 - 08:00 #8
et svar ;-))
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester