Avatar billede Madsc Novice
13. december 2017 - 22:57 Der er 16 kommentarer og
3 løsninger

Format dato og tid

Jeg har et format der ser sådan her ud: 03/31/17 08:32:11 PM. Jeg ønkser at adskille dato og tid. Der sker ikke noget når jeg forsøger at formatere cellen, og jeg kan heller ikke bruge: =+DATO(ÅR(A1);MÅNED(A1);DAG(A1))

Hvad gør jeg?

På forhånd tak,

Mads
Avatar billede kabbak Professor
13. december 2017 - 23:12 #1
Hvis du har datotid i a1
B1 =heltal (a1)
Formater som dato
C1 = a1 - heltal (a1)
Formater som klokken
Avatar billede Madsc Novice
14. december 2017 - 08:49 #2
B1 =heltal (a1) duer desværre ikke, den returnerer bare #VÆRDI!
Avatar billede finb Ekspert
14. december 2017 - 09:33 #3
=DATO(2000+midt(streng;7;2);venstre(streng;2);midt(streng;4;2))
Avatar billede Madsc Novice
14. december 2017 - 10:14 #4
Tak for svar finb, men jeg er ikke sikker på hvad du mener, beklager. Hvad gør jeg ved formlen du har skrevet?

Mvh
Mads
Avatar billede finb Ekspert
14. december 2017 - 10:29 #5
Hvis din streng står i A1,
indsæt formlen i B1:
=DATO(2000+midt(a1;7;2);venstre(a1;2);midt(a1;4;2))
Avatar billede Madsc Novice
14. december 2017 - 10:43 #6
Mange tak Finb! Det separerende datoen for mig. Men jeg vil også gerne have klokken i c1, hvordan separerer jeg den?

Mvh
Mads
Avatar billede finb Ekspert
14. december 2017 - 11:25 #7
Det er vist TID eller TIdsværdi
c1:
=tid(midt(a1,10;2);midt(a1;13;2);midt(a1;16;2)) & " " & højre(a1;2)
eller:
=tidsværdi(midt(a1,10;2);midt(a1;13;2);midt(a1;16;2)) & " " & højre(a1;2)
Avatar billede Jan Hansen Ekspert
14. december 2017 - 13:59 #8
følgende stump kode gør at du får lavet din tekst om til datoformatet dd-mm-åååå tt:mm:ss


Public Function MyDateTime(OldDateTime As String) As Date
    Application.Volatile
    MyDateTime = Format(OldDateTime, "dd-mm-yy hh:mm:ss")
End Function


i B1:      =MyDateTime(A1) og formater cellen dd-mm-åååå
i C1:      =MyDateTime(A1) og formater cellen tt:mm:ss

eller alt i B1:  MyDateTime(A1) og formater cellen dd-mm-åååå tt:mm:ss (evt. kun åå)

Jan
Avatar billede jens48 Ekspert
14. december 2017 - 14:34 #9
Normalt ville jeg sige at kabbaks forslag (#1) er den eneste rigtige måde at gøre det på, men problemet er åbenbart at det, der står i den oprindelige celle ikke er formatteret som dato og tid, men som en tekst, og det gør det noget sværere at få de rigtige værdier ud. finb har i #5 klaret datoen, så her er formelen for tiden:

=MIDT(A1;10;2)/24+MIDT(A1;13;2)/24/60+HVIS(HØJRE(A1;2)="PM";0,5;)
Avatar billede jens48 Ekspert
14. december 2017 - 14:39 #10
Ups. Jeg glemte at få sekunderne med:

=MIDT(A1;10;2)/24+MIDT(A1;13;2)/24/60+MIDT(A1;16;2)/24/3600+HVIS(HØJRE(A1;2)="PM";0,5;)
Avatar billede kabbak Professor
14. december 2017 - 19:53 #11
Her er en function, der oversætter Amerikansk dato til Dansk

Public Function DanishDate(Dato As String)
'oversætter amerikansk dato tid til dansk
    strD = Split(Dato, " ")
    dato1 = DateSerial(Right(strD(0), 2), Left(strD(0), 2), Mid(strD(0), 4, 2))
    dato2 = TimeSerial(Left(strD(0), 2), Mid(strD(0), 4, 2), Right(strD(0), 2))
    If strD(2) = "PM" Then
        dato2 = dato2 + 0.5
    Else
        dato2 = dato2
    End If
    DanishDate = dato1 & " " & dato2
End Function
Avatar billede Madsc Novice
19. december 2017 - 09:31 #12
Jens48, jeg forsøgte med din formel, men excel vil ikke læse formlen, og skriver noget i retning af; Er det ikke en formel du prøver at skrive? Hvis det ikke er en formel du forsøger at skrive, sæt da " ' " foran.
Avatar billede Madsc Novice
19. december 2017 - 09:39 #13
Kabbak, jeg vil, som du er inde på meget gerne omformatere amerikansk dato til dansk, men jeg er ikke sikker på hvad du mener i dit forslag med den funktion du har sat ind. Hvad skriver jeg i cellen?
Avatar billede Jan Hansen Ekspert
19. december 2017 - 10:12 #14
har du testet min, den burde virke
Avatar billede Madsc Novice
19. december 2017 - 11:34 #15
Jeg bruger dansk excel og ved ikke hvad din mydatetime hedder i dansk version, kan du hjælpe med det?
Avatar billede Jan Hansen Ekspert
19. december 2017 - 16:17 #16
Det er bare det navn jeg har givet functionen
læg koden i et modul og gør som i #8
Avatar billede Madsc Novice
19. december 2017 - 16:28 #17
Jeg må desværre stadig sige at jeg ikke forstår dit svar. Hvordan lægger jeg koden i modul? Hvad gør jeg efter den er lagt i modul?

Mvh
Mads
Avatar billede kabbak Professor
19. december 2017 - 19:20 #18
#11

kaldes med =DanishDate(A1)
hvor du har din amerikanske tekststring i A1

Public Function DanishDate(Dato As String)
'oversætter amerikansk dato tid til dansk
Application.Volatile
    strD = Split(Dato, " ")
    dato1 = DateSerial(Right(strD(0), 2), Left(strD(0), 2), Mid(strD(0), 4, 2))
    dato2 = TimeSerial(Left(strD(0), 2), Mid(strD(0), 4, 2), Right(strD(0), 2))
    If strD(2) = "PM" Then
        dato2 = dato2 + 0.5
    Else
        dato2 = dato2
    End If
    DanishDate = dato1 & " " & dato2
End Function
Avatar billede Jan Hansen Ekspert
19. december 2017 - 19:57 #19
tryk alt+F11 - > Insert -> modul

Kopier koden ind fra #8 eller #18
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

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