Konvertering til tal
Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Generelt
Forum beskrivelse: Hjælp til generel daglig brug af programmet Excel
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=401
Udskrevet den: 19.Apr.2025 kl. 13:56
Emne: Konvertering til tal
Besked fra: stausholm
Emne: Konvertering til tal
Posteringsdato: 20.Jul.2011 kl. 14:46
Jeg har data i et excelark som bliver skabt af et rapporteringssystem.
Arket kommer ud med punktummer istedet for kommaer og formateret forkert, så der ikke kan beregnes.
Normal ville jeg så benytte mig af søg og erstat og ( da jeg kører med 2003) multiplicering via "indsæt specielt" med 1 tastet ind i et givent felt.
søg og erstat fungerer fint, men det virker som om feltet i virkeligheden heller ikke er formateret som tekst, så det eneste der sker når jeg via "indsæt specielt" multiplicerer med 1 flyttes data nu til venstre i feltet, men kan stadig ikke benyttes til formler.
jeg vedlægger en kopi af data i arket.
Er der andre der er stødt på et lignende problem og er der nogen løsning?
|
Svar:
Besked fra: stausholm
Posteringsdato: 20.Jul.2011 kl. 14:52
uploads/225/konvertering.xls" rel="nofollow - uploads/225/konvertering.xls
|
Besked fra: rassten
Posteringsdato: 22.Jul.2011 kl. 23:45
Kolonne "B" og "C" bliver ikke opfattet som tal, da der er et mellemrum (" ") før tallet. Hvorimod Kolonne "A" opfattes som tal.
Jeg kan kun fjerne dette mellemrum ved formel flyttet data over i nye kolonner. Derfra kan disse værdier altid flyttes/kopieres tilbage.
uploads/107/Kopi_af_konvertering.xls" rel="nofollow - uploads/107/Kopi_af_konvertering.xls
------------- VH rassten
Arbejde excel 2010 Privat excel 2010
|
Besked fra: Allan
Posteringsdato: 23.Jul.2011 kl. 23:30
Hej Stausholm, Alternativt, kan du bruge en lille stump makro til at klare problemet. Sub Stausholm() For Each c In Selection.Cells If InStr(1, c, ".", vbTextCompare) > 0 Then c.Value = Replace(c.Value, ".", ",", 1) End If If InStr(1, c, " ", vbTextCompare) > 0 Then c.Value = Replace(c.Value, " ", "", 1) End If c.Value = c.Value * 1 Next c End Sub Koden erstatter et evt. punktum med komma og fjerner det lille mellemrum før tallet. Den gør faktisk nøjagtig det samme som Rasstens formel, blot oversat til VBA. //Allan
|
Besked fra: stausholm
Posteringsdato: 25.Jul.2011 kl. 11:05
Tak til jer begge. 
Jeg har brugt macroløsningen, og har lagt den ind hos mine kollegaer, så de nu bare klikker deres genvej og presto kan der regnes med værdierne.
Endnu en gang tak.
|
Besked fra: stausholm
Posteringsdato: 25.Jul.2011 kl. 12:03
Løsningen med makroen fungerede fint på kommatallene, men jeg har nu set at det også drejer sig om data i tidsformat.
Målet med løsningen skulle være at ligesom kommatallene skulle tidsdata også blive validt. Det optimale ville være at tidsformatet i samme omgang blev konveret til kommatal, dvs. at f.eks. 26:41:00 skulle konverteres til 26,68.
Hvis macroløsningen ville skulle deles op i 2, ville det være helt i orden 
Håber I også kan hjælpe med denne.
Mvh. Per
uploads/225/Mappe1.xls" rel="nofollow - uploads/225/Mappe1.xls
|
Besked fra: Allan
Posteringsdato: 27.Jul.2011 kl. 23:06
Hej Per, Undskyld ventetiden, ferie du ved  . Prøv lige denne, jeg tror den klarer din udfordring: Sub Stausholm() For Each c In Selection.Cells If InStr(1, c, ":", vbTextCompare) > 0 And Left(c, 1) = " " Then c.Value = Mid(c, 2, Len(c) - 1) c.Value = c.Value * 24 c.NumberFormat = "General" End If If Left(c, 1) = " " Then c.Value = Mid(c, 2, Len(c) - 1) End If Next c End Sub Koden ser kun cellens indhold som tid hvis cellen indeholder et kolon. hvis ikke cellen indeholder kolon, ses cellen som et tal. Virker det i din ende? //Allan
|
Besked fra: stausholm
Posteringsdato: 28.Jul.2011 kl. 09:46
Jeg har ingen forventninger på levering . Det er jo et åbent forum, hvor alt arbejde er frivilligt
Til gengæld er jeg superglad for at du gider kigge på det.
Desværre ser det ikke ud til at det virker i 2003. Der sker simpelthen ingenting.
Bare for at være helt sikker på at vi snakker om det samme.
I sin nuværende form genkender Excel overhovedet ikke data, hverken som tal eller datoformat (jeg tror igen der måske er et mellemrum før selve tallet/tidsangivelsen der spøger).
Det jeg ønsker er løsning der ændrer tiden - først til et format der kan anvendes til beregninger og derefter skal den angivne tid i tidsformat, konverteres til tid i decimalformat (komma)
|
Besked fra: Allan
Posteringsdato: 28.Jul.2011 kl. 11:17
Hej igen, Det er fordi forummet 'oversætter' tegnet foran dine tal til et normalt mellemrum når jeg poster det til dig.
Det mellemrum du ser foran dine tal er nemlig ikke et helt normalt mellemrum. Prøv lige med denne kode i stedet, hvor jeg har oversat tegnet (Som hedder Chr 160) Sub Stausholm() For Each c In Selection.Cells If InStr(1, c, ":", vbTextCompare) > 0 And Left(c, 1) = Chr(160) Then c.Value = Mid(c, 2, Len(c) - 1) c.Value = c.Value * 24 c.NumberFormat = "General" End If If Left(c, 1) = Chr(160) Then c.Value = Mid(c, 2, Len(c) - 1) End If Next c End Sub //Allan
|
Besked fra: stausholm
Posteringsdato: 28.Jul.2011 kl. 12:50
Der var den. Du er en stjerne .
Jeg ændrede så "General" til "##.##" , så der kun kommer 2 decimaler på (ser ud til at fungere)
Jeg bukker og skraber ydmygt. 
Mvh. Per Stausholm
|
Besked fra: Allan
Posteringsdato: 28.Jul.2011 kl. 22:37
Velbekomme Per, tak for din tilbagemelding  Du har fuldstændig ret mht. formatet, det kan du ændre som du lyster. //Allan
------------- MVH
Allan https://www.excel-regneark.dk" rel="nofollow - Excel-regneark.dk - Gratis skabeloner til Excel Få over 120 ekstra funktioner med Danmarks bedste add-in
|
|