14. januar 2013 - 11:16Der er
8 kommentarer og 1 løsning
VBA til "konverter til tal"
Hej Eksperter
Jeg bruger excel 2007 engelsk version.
Jeg eksporterer ofte nogle data fra et ERP system over i excel. Nogle af dataene bliver i excel formateret som tekst, men jeg vil gerne have dem som tal. Det kan fx være et kontonr. i kolonne A. Men der er dog ikke altid en værdi i alle celler i kolonne A. Jeg vil gerne nemt kunne formatere værdierne i kolonne A fra tekst til tal. Her kan man så markere fra øverste værdi (må ikke være en tom celle) og ned til nederste værdi -> scrolle tilbage til toppen af listen -> trykke på det lille ikon med et udråbstegn i til venstre for den øverste markerede celle -> og vælge "Convert to numbers". Og det virker helt som det skal. Det er bare en bøvlet process når listen med data er 700.000 rækker og der er mange tomme celler ind imellem. Man kan nemlig ikke markere hele kolonnen, eller bare fra A1:A700.000, hvis ikke A1 indeholder en værdi - funktionen "Convert to numbers" er simpelthen ikke mulig at vælge så!! Jeg kan heller ikke finde en genvejstast til at komme ind i ikonen med det lille udråbstegn, eller for den sags skyld en genvejstast direkte til "Convert to numbers" funktionen.
Kan man på en eller anden måde løse dette med en VBA kode, hvor man først markere fx hele kolonne A, og derefter afspiller en VBA kode der konverterer alt tekst til tal. VBA'en skal kunne klarer at fx A1 er tom, og at der er flere tomme celler igennem hele kolonne.
Eller kan man løse det med andet en VBA? Her skal så siges at det ikke er en mulighed at oprette en ny kolonne og gange celle Ax med 1 for at få konverteret til tal! Og løsningen skal være med mindst mulige klik!
Men her angiver du direkte i VBA'en, hvilket områd du vil ændre til værdier. Kan du skrive den, så det er det område jeg selv har markeret (kolonne eller anden range) som bliver brugt i koden?
Sub Macro() Dim rng As Range Set rng = Selection For Each Celle In Selection If Celle <> "" Then Celle.NumberFormat = 0 Celle.Value = Celle.Value * 1 End If Next End Sub
eneste forskel er at linien "Celle.Value = Celle.Value * 1" er tilføjet.
Til somalpe: Den nye virker hvis jeg markerer fx et område der hedder D2:D10, men ikke hvis jeg markerer hele kolonne. Den virker heller ikke hvis der i et af felterne rent faktisk står en rigtig tekst, fx kolonnens overskrift. Vil den kunne skrives, så den virker på en hel kolonne incl et felt med en overskrift der jo er tekst?
Man kan naturligvis ikke gane et bogstav med 1 :) Der skal lige et lille check ind der checker om det nu også er et tal der står i feltet inden det bliver ganget med 1. Dette skulle gerne virke: Sub Macro() Dim rng As Range Set rng = Selection For Each celle In Selection If celle <> "" Then celle.NumberFormat = 0 If IsNumeric(celle.Value) Then celle.Value = celle.Value * 1 End If End If Next End Sub
Ved mig virker den fint hvis jeg markerer er hel kolonne.
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.