Avatar billede Slettet bruger
28. august 2013 - 10:12 Der er 3 kommentarer og
1 løsning

VBA til håndtering af csv-data (Excel 2010)

Jeg har en Excel fil der i Sheet1 indeholder csv-data i stil med følgende:

,"[for sale]","kr6.88","14,800","Low","75"
,"[billabong]","kr0.45","110,000","Low","62"
,"[online surf shop]","kr2.87","720","High","48"

Jeg kan bruge Text to Columns, men det giver problemer fordi visse tal indeholder komma som tusindadskiller, f. eks. 110,000. Efter Text to Columns operation vil 110,000 fremstå som 110 - altså som mindre end tallet i næste række (720).

Jeg ved ikke hvordan man bedst gør, men har tænkt på, om man via VBA kunne lave noget i stil med følgende formel (hvis den første af ovennævnte strenge står i A2):

=SUBSTITUTE(A2;",";"";4)

altså finde det fjerde komma og erstatte det med "".

Samtidig ville jeg meget gerne have noget VBA der kan finde kr (som i kr6.88), fjerne kr, og erstatte punktum med komma så jeg tilbage har 6,88 som tal.

csv-data opdateres jævnligt, hvorfor jeg meget gerne vil have en VBA-løsning. Jeg vil gerne have opsplitningen foretaget i et separat ark.

Er der en der kan/vil hjælpe?

Hans
Avatar billede supertekst Ekspert
28. august 2013 - 12:00 #1
Du er velkommen til at sende filen.
Også gerne sådan som filen skal se ud efter VBA-behandling.

@-adresse under min profil.
Avatar billede supertekst Ekspert
28. august 2013 - 14:34 #2
Skitse:

Dim antalRæk As Integer, ræk As Integer, linje As String, tabel As Variant
Dim part0 As String, part1 As String, part2 As String, part3 As String, part4 As String, part5 As String
Public Sub redigerCsv()
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
    For ræk = 1 To antalRæk
        linje = Range("A" & ræk)
        tabel = Split(linje, """")
       
        part0 = tabel(0)
        part1 = Chr(34) & tabel(1) & Chr(34)
        part2 = tabel(2)
       
        part3 = Chr(34) & tabel(3) & Chr(34)
        part3 = Replace(part3, "kr", "")
        part3 = Replace(part3, ".", ",")
       
        part4 = tabel(4)
       
        part5 = Chr(34) & tabel(5) & Chr(34)
        part5 = Replace(part5, ",", ".")
       
        part6 = tabel(6)
        part7 = Chr(34) & tabel(7) & Chr(34)
        part8 = tabel(8)
        part9 = Chr(34) & tabel(9) & Chr(34)
       
        nylinje = part0 & part1 & part2 & part3 & part4 & part5 & part6 & part7 & part8 & part9
       
       
        Range("B" & ræk) = nylinje
        Columns.AutoFit
    Next ræk
End Sub
Avatar billede supertekst Ekspert
29. august 2013 - 08:12 #3
Et svar
Avatar billede Slettet bruger
29. august 2013 - 08:23 #4
Mange tak til SUPERTEKST for kompetent hjælp.

Hans
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