Oprettet man. d. 14. januar 2013 kl. 11:16:16

lineriber
lineriber (13.585 point. Point ude: 0)


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!

Glæder mig til at høre jeres forslag.

Mvh
Line Riber

Skrevet man. d. 14. januar 2013 kl. 13:06:18| #1

finb
finb (16.101 point)
Har ikke Excel her, efter hukommelsen:

for each cellA in range("a:a")
  if cellA <> "" then cellA = application.value(cellA)
next cellA

Skrevet tir. d. 15. januar 2013 kl. 08:18:35| #2

lineriber
lineriber (13.585 point)
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?

Skrevet tor. d. 17. januar 2013 kl. 13:40:59| #3

somalpe
somalpe (18.515 point)
Prøv evt med den her:

Sub Macro()
  Dim rng As Range
  Set rng = Selection
  For Each Celle In Selection
    If Celle <> "" Then
      Celle.NumberFormat = 0
    End If
  Next
End Sub

Skrevet fre. d. 18. januar 2013 kl. 10:17:15| #4

lineriber
lineriber (13.585 point)
Hej Somaple

Der sker ingenting når jeg kører din VBA, eller dvs. teksten bliver ihvertfald ikke konverteret til tal.....

Skrevet fre. d. 18. januar 2013 kl. 10:24:57| #5

somalpe
somalpe (18.515 point)
Prøv at denne version:

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.

Virker her, men jeg kører Office 2010.....

Skrevet fre. d. 18. januar 2013 kl. 11:19:29| #6

lineriber
lineriber (13.585 point)
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?

Skrevet fre. d. 18. januar 2013 kl. 11:45:02| #7

somalpe
somalpe (18.515 point)
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.

Skrevet fre. d. 18. januar 2013 kl. 12:14:02| #8

lineriber
lineriber (13.585 point)
Så virker det bare perfekt :-)

Smider du et svar somalpe?
Tusinde tak for hjælpen og god weekend.

Skrevet fre. d. 18. januar 2013 kl. 12:15:50| #9

somalpe
somalpe (18.515 point)
God weekend til dig også :)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Split en streng og lav en liste

Oprettet den 21. august 2014 kl. 02.51
hcm giver 100 point for svar | Giv et svar »

Opslag i både rækkte og kolonne samtidig

Oprettet den 20. august 2014 kl. 10.24
faaborg_fyn giver 60 point for svar | Giv et svar »

tæl hviser formel der skal kombineres med en datoformel...

Oprettet den 19. august 2014 kl. 21.38
Nichlasmrk giver 30 point for svar | Giv et svar »

Seneste guides

Opret BOOTBAR USB pen ...
Undgå reklamerne på iPad





Computerworld

Teaser billede

Guide: Sådan laver du din egen private "Dropbox"-server med Raspberry Pi på et kvarter

Selv uden de store Linux-evner kan en nybegynder relativt nemt lave en Sync-server, som fungerer på samme måde som de kendte sky-tjenester, så længe man er væbnet med tålmodighed og gåpåmod.

CIO

Teaser billede

Her er læren af Windows 8.1: Sådan kan du undgå kaos næste gang

ComputerViews: Opgraderingen Windows 8.1 har givet store problemer for mange brugere. Problemet skal findes i en grundlæggende mangel, som du også selv bærer et ansvar for.

Comon

Teaser billede

Stor guide: Her er den nødvendige software til din studie-pc

Software til din studiecomputer kan koste dig over 10.000 kroner gennem uddannelsen, men du kan også klare dig ganske gratis. Her er en guide til den nødvendige software på både Mac og pc - og til...

Channelworld

Teaser billede

Analyse: Derfor kan 2014 blive det bedste Mac-år nogensinde

Analyse: Mens salget af pc'er falder støt, ser 2014 ud til at blive et rekord-år for Mac-computere. Vi har kigget på salgstallene og fremskriver friskt salget. Se her, hvad vi når frem...

White paper

Teaser billede

Den lette vej fra legacy til SOA

Få med dette webcast fra BluePhoenix et teknisk overblik over, hvad en legacy-modernisering kan indebære, og hvad der bedst kan betale sig.



Udgiver · © 2014 Computerworld A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger