Avatar billede petert Forsker
08. november 2009 - 11:57 Der er 8 kommentarer og
1 løsning

Omskrivning af datoformat.

Hvis jeg eks. i en celle har et datoformat således October 19, 2009, 11:54:08 AM
hvordan formaterer jeg så cellen til at vise datoen som
19 okt.09 11:54:08
Alternativ
hvis jeg i A1 har datoen October 19, 2009, 11:54:08 AM
hvordan kan jeg splitte denne op, så der i B2 står 19 Okt.2009
og kun klokkeslettet skrives i C2 som 11:54:08 (uden AM)
Mvh
Petert
Avatar billede rosco Novice
08. november 2009 - 14:45 #1
=A1 Formatteret som 19 Okt.2009 eller som tt:mm:ss
Avatar billede petert Forsker
08. november 2009 - 15:21 #2
Jeg har prøvet at indsætte forslaget. men det ændres ikke. Hvad kan jeg prøve.
Mvh
Petert
Avatar billede tjacob Juniormester
08. november 2009 - 16:44 #3
Problemet er at formatet ikke genkendes som et datoformat, så uanset hvordan du formaterer cellen vil den ikke gøre det korrekt. Problemet er dels kommaerne, og dels de engelske månedsbetegnelser.

Det nemmeste (for mig) er at lave en brugerdefineret funktion til at "oversætte" formatet.
Denne funktion outputter an komplet dato med klokkeslet i Excels eget datoformat, dvs at du med formatteringen af målcellerne kan få vist hvad du vil.

Indsæt denne funktion i et modul i Visual Basic:
(sig til hvis du skal have hjælp til dette)

Public Function FindDato(ByVal pStr As String) As Double
   
    Dim sDato As String, pDato As Date, lOut As Double
    sDato = Left(pStr, Len(pStr) - 13)
    sDato = LCase(sDato)
    sDato = Replace(sDato, "january", "januar", 1, , vbTextCompare)
    sDato = Replace(sDato, "february", "februar", 1, , vbTextCompare)
    sDato = Replace(sDato, "march", "marts", 1, , vbTextCompare)
    sDato = Replace(sDato, "may", "maj", 1, , vbTextCompare)
    sDato = Replace(sDato, "june", "juni", 1, , vbTextCompare)
    sDato = Replace(sDato, "july", "juli", 1, , vbTextCompare)
    sDato = Replace(sDato, "october", "oktober", 1, , vbTextCompare)
    pDato = sDato
    lOut = DateSerial(Year(pDato), Month(pDato), Day(pDato))
    pDato = Right(pStr, 11)
    lOut = lOut + TimeSerial(Hour(pDato), Minute(pDato), Second(pDato))
    FindDato = lOut

   
End Function

Nu kan du bruge funktionen ved i en celle at skrive: =FindDato(A1) (med datostrengen i A1)

Du skal formattere cellen med brugerdefineret format: dd mmm åååå tt:mm:ss
eller: dd mmm åååå (kun datoen)
eller: tt:mm:ss (kun klokkeslettet)
Avatar billede tjacob Juniormester
08. november 2009 - 16:46 #4
tags blev forkert placeret, sådan:

Public Function FindDato(ByVal pStr As String) As Double
   
    Dim sDato As String, pDato As Date, lOut As Double
    sDato = Left(pStr, Len(pStr) - 13)
    sDato = LCase(sDato)
    sDato = Replace(sDato, "january", "januar", 1, , vbTextCompare)
    sDato = Replace(sDato, "february", "februar", 1, , vbTextCompare)
    sDato = Replace(sDato, "march", "marts", 1, , vbTextCompare)
    sDato = Replace(sDato, "may", "maj", 1, , vbTextCompare)
    sDato = Replace(sDato, "june", "juni", 1, , vbTextCompare)
    sDato = Replace(sDato, "july", "juli", 1, , vbTextCompare)
    sDato = Replace(sDato, "october", "oktober", 1, , vbTextCompare)
    pDato = sDato
    lOut = DateSerial(Year(pDato), Month(pDato), Day(pDato))
    pDato = Right(pStr, 11)
    lOut = lOut + TimeSerial(Hour(pDato), Minute(pDato), Second(pDato))
    FindDato = lOut
   
End Function
Avatar billede petert Forsker
08. november 2009 - 18:35 #5
Det ser super ud. Hvordan indsætter jeg denne funktion.
Ændre det noget at det er i hele kolonne D fra række 2 og ned jeg vil ændre disse datoer?
Skal denne så ændres"=FindDato(A1) (med datostrengen i A1)"?
MVH
Petert
Avatar billede tjacob Juniormester
08. november 2009 - 18:50 #6
Du indsætter funktionen således:

-Tryk Alt+F11 for at åbne Visual Basic
-i det øverste venstre vindue: Højreklik i VBAProject og vælg Insert>Module
-I den store rude til højre indsæt funktionen

Nu kan du i selve regnearket i en hvilken som helst celle indsætte funktionen ved at skrive: =FindDato(X)

Hvor X er den celle hvor din datostreng står, altså f.eks. October 19, 2009, 11:54:08 AM

Hvis du har dato strengene stående i D-kolonnen, så kan du i en anden kolonne skrive
=FindDato(D1) i række 1.

Denne formel kan du så trække med musen ned ad kolonnen.
Avatar billede petert Forsker
14. december 2009 - 12:18 #7
Tak for svaret læg et svar så vi kan lukke dette
Mvh
Petert
Avatar billede petert Forsker
09. juli 2010 - 14:36 #8
Hej Læg et svar så jeg kan luke dette.
Tak for hjælpen
MVH
Petert
Avatar billede petert Forsker
31. juli 2010 - 07:00 #9
Jeg lukker dette. Tak for hjælpen.
Mvh
Petert
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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