22. april 2004 - 16:46Der 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
' 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!
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
'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
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.
Nåh, men han vil åbenbart ikke være med!?! Bak, pointene er dine! §;-D
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.