Avatar billede x-lars Novice
22. april 2004 - 16:46 Der er 5 kommentarer og
1 løsning

Formater via makro

Hej X'perter!

Når jeg læser data ind fra et økonomisystem, som tekstfiler, bruger jeg en makro til at konvertere tekststrengene til brugbare talstørrelser.

Makroen sætter også format på kolonner, der indeholder tal, men det slår ikke igennem, eller ihvertfald ikke konsekvent.

Jeg ville gerne have, at kolonnerne blev formateret højrestillet, med punktum som tusindadskiller, komma som decimalseparator og med to decimaler.

Koden ser således ud:
'  Fjern mellemrum i talkolonner og erstat engelsk decimalpunktum med DK decimalkomma
    Columns("d:f").Select
    Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   
    Columns("d:f").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
   
'  Sæt et nummerformat på talkolonnerne
    Columns("d:f").Select
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
        .NumberFormat = "#,##0.00"
    End With

Men i bedste fald bliver kun f-kolonnen korrekt formateret. Jeg kan ikke bruge formatpenslen til at kopiere det korrekte format over på de andre kolonner, men hvis jeg åbner en enkelt af de forkert formatterede celler og trykker Enter igen, bliver den korrekt!

Hvad gør jeg galt?
Avatar billede bak Seniormester
22. april 2004 - 20:16 #1
Du gør såmænd ikke noget galt. Sådan er det bare, når tekstfiler hiver ind og konverteres til tal.
Du kan optage følgende i en makro.
Sæt et 1-tal i en tilfældig celle udenfor området.
Kopier denne celle
marker det område, det er galt med (Kun data, ikke blanke celler)
Vælg "Indsæt Speciel" og vælg så "Multiplicer" og tryk OK.

Nu bliver de celler, der indeholder tal konverteret til rigtige tal
Avatar billede prebjo Nybegynder
22. april 2004 - 21:04 #2
'Erstat koden efter "Sæt et nummerformat på talkolonnerne med nedenstående"
Dim V
For Each x In Range("D1:F_Rækkenr").Cells  'Indsæt rækkenr
    V = x.Value
    x.Clear
    x.NumberFormat = "#,##0.00"
    x.Value = V
Next
Avatar billede x-lars Novice
23. april 2004 - 12:37 #3
Sorry gutter, men intet af ovenstående virker rigtigt!

Det gør dette: Hvis vi vore taldata i d2:f1500: Marker G2 og skriv "=d2*1". Kopier 2 gange til højre og derefter 1499 gange nedad. Den blok, der nu er markeret, sættes til nummerformat med tusindadskiller og 2 decimaler (genvej CTRL + SHIFT + 1) og kopieres. Markér i stedet D2 og højreklik. Vælg Indsæt speciel > værdier. Markér g2:i1500 og slet indholdet. Så har jeg rene talværdier i min d2:f1500 blok.

Tak for hjælpen, gutter. Smider I nogle svar? Det var nok bak, der bragte mig tættest på målstolpen.
Avatar billede x-lars Novice
29. april 2004 - 08:05 #4
Vil I ikke have point?
Avatar billede bak Seniormester
29. april 2004 - 08:54 #5
jo da, gerne :-)
Avatar billede x-lars Novice
14. maj 2004 - 15:59 #6
Nåh, men han vil åbenbart ikke være med!?! Bak, pointene er dine! §;-D
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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