Avatar billede ly Nybegynder
21. august 2003 - 09:55 Der er 17 kommentarer

Dato-format i Excel

Jeg har et problem! Jeg har lavet en makro der skal åbne en tekstfil, kopiere nogle celler (bl.a. indeholdende nogle datoer) og derefter sætte det kopierede ind i et andet ark. Problemet er at halvdelen af datoerne går fra et være dd-mm-åååå tt:mm til at være mm-dd-åååå tt:mm:ss.

Jeg har forsøgt at løse problemet ved at ændre på formateringen af cellerne, jeg har prøvet alt, standard, tekst osv. Det virker ikke.

Det underlige er, at hvis jeg bare manuelt åbner tekstfilen kopiere data og sætter dem ind, er der ingen problemer. Fejlen sker når jeg "optager" denne handling til en makro, og så afspiller makroen!

Indstillingerne på computeren står til dansk, og datoindstillinger er angivet som den normale danske måde - altså dd-mm-åååå.

Håber der er nogen der kan hjælpe inden jeg springer i luften !!!!! (o:
Avatar billede ellebaek Nybegynder
21. august 2003 - 09:59 #1
format - celler - tal
sæt til dato, så er der en mulighed til højre hvor der er dd-mm-åååå tt-mm-ss
Avatar billede ellebaek Nybegynder
21. august 2003 - 10:00 #2
ups...

Glem mit svar!
Avatar billede thor.ostergaard Nybegynder
21. august 2003 - 12:01 #3
Følger lige med :-)
Avatar billede aheiss Praktikant
21. august 2003 - 12:22 #4
Kunne du ikke slutte makroen af med at formatere datoerne.
Ligger datoerne f.eks. i kolonne A indsættes nedenstående lige før "End Sub":

    Columns("A:A").Select
    Selection.NumberFormat = "dd/mm/yyyy hh:mm"
Avatar billede thor.ostergaard Nybegynder
21. august 2003 - 12:31 #5
Kender godt problemet og håbede på, at der var nogle der kunne give et godt svar - jeg tror i stedet jeg vil forsøge mig. Hvis der er lettere metoder må I endelig sige til.

Problemet er at Excel arbejder med et grund datoformat "mm/dd/åååå" og det eneste sikre er at konvertere den danske dato til det format og efterfølgende formatere cellen passende...

Aar = Left(strDato, 4)
Maaned = Mid(strDato, 4, 2)
Dag = Right(strDato, 2)
Range.Formula = DateValue(Maaned & "/" & Dag & "/" & Aar)
Range.NumberFormat = "dd-mm-yyyy"

Det er muligt at du skal fifle lidt rundt med tingene så det passer helt til dine data, men det skulle være et rimeligt bud.
Avatar billede ly Nybegynder
21. august 2003 - 13:10 #6
Kan ikke helt få det til at virke. Jeg har en celle (c4) som indeholder følgende: 02-07-2003  21:25:00 - hvis jeg forstår dit svar rigtigt, så skal jeg så lave en formel der hedder: =midt(c4;4;2) & "/" højre(c4;2) & "/" & venstre(c4;4) - men en sådan formel vil excel ikke godtage! Jeg skal nok have det skåret lidt mere ud i pap! (o:
Avatar billede thor.ostergaard Nybegynder
21. august 2003 - 13:15 #7
Fint nok - det er noget du skal skrive inde i den makro, der importerer dine data.
Prøv at indsætte din makro her - eller sende den til mig - så skal jeg fortælle hvor du skal skrive det. Du kan sende til thor@kursusmaterialer.dk
Avatar billede ly Nybegynder
21. august 2003 - 13:50 #8
Okay - her er hele makroen (det er i det første det går galt - altså når den åbner filen grp-id.txt og så kopierer data og sætter det ind i det ark der hedder grp! datoerne er i kollonne c, og bliver sat ind i kollone c (i grp arket)

Håber du kan gennemskue det.

Sub hent_data2()
'
' hent_data2 Makro
' Makro indspillet 07-07-2003 af jesper_j
'

'
    Workbooks.OpenText Filename:= _
        "C:\Documents and Settings\jesper_j\skrivebord\GRP-id.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:=";", FieldInfo:=Array(Array(1, 1 _
        ), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
        , 1), Array(16, 1), Array(17, 1))
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range("A1:DV27").Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Range("A1:Q27").Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("GRP").Select
    ActiveWindow.SmallScroll Down:=-12
    Range("C2").Select
    ActiveWindow.ScrollColumn = 1
    Range("A2").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll ToRight:=0
    Windows("GRP-id.txt").Activate
    ActiveWindow.Close
    ChDir "I:\Export\Opfølgning Jesper"
    Workbooks.Open Filename:= _
        "I:\Export\Opfølgning Jesper\Opfølgning 2002 Total2.xls"
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("Tv2-visninger").Select
    ActiveWindow.SmallScroll Down:=-18
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll ToRight:=0
    Windows("Opfølgning 2002 Total2.xls").Activate
    ActiveWindow.Close
    Workbooks.Open Filename:="I:\Export\Opfølgning Jesper\Opfølgning 2002 PG.xls"
    Range("A4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("Hele fladen").Select
    Range("A3").Select
    ActiveSheet.Paste
    Windows("Opfølgning 2002 PG.xls").Activate
    ActiveWindow.Close
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("Vejledning").Select
    Range("A1").Select
End Sub
Avatar billede thor.ostergaard Nybegynder
21. august 2003 - 14:07 #9
Jeg kan godt se hvor der skal rettes, men der skal skrives lidt om på makroen for at få det til virke. Jeg har desværre ikke tid til at gøre mere ved det lige nu (har en af de der opgaver der giver rigtige penge :-) ). Jeg skal nok vende tilbage senere.

Det kan også være, at der er nogle af de andre, der har en god idé...
Avatar billede ly Nybegynder
21. august 2003 - 14:15 #10
Hej Thor

Det er helt i orden - hvis du bare vil svare når du har tid så vil jeg blive glad!

God arbejdslyst :o)
Avatar billede thor.ostergaard Nybegynder
22. august 2003 - 05:55 #11
OK - her kommer det så (tror jeg nok)...
Lad os antage, at datoen står i kolonne 3 (altså C kolonnen) så skal du ændre Array(3,1) i makroen til Array(3,4) - det lyder lidt magisk, men er ikke så indviklet endda - hvis du vil have en nærmere forklaring på, hvorfor kan du læse det her:
http://www.kursusmaterialer.dk/Excel%20VBA/Excel%20VBA%20-%20kode/V%e6rkt%f8jskasse.aspx
Avatar billede ly Nybegynder
22. august 2003 - 09:13 #12
Hej Thor - tak for dit svar. Desværre virker det ikke! Det jeg kopierer fra textfilen er:

02-07-2003 21:25
03-07-2003 20:00
03-07-2003 20:40
09-07-2003 21:25
09-07-2003 22:45
10-07-2003 20:00
10-07-2003 20:45
10-07-2003 21:30
10-07-2003 22:45
14-07-2003 00:05
16-07-2003 21:25
20-07-2003 20:00
23-07-2003 21:25
25-07-2003 00:25
27-07-2003 00:30
27-07-2003 20:00

Og det bliver, når jeg afspiller makroen, til:

07-02-2003 21:25
07-03-2003 20:00
07-03-2003 20:40
07-09-2003 21:25
07-09-2003 22:45
07-10-2003 20:00
07-10-2003 20:45
07-10-2003 21:30
07-10-2003 22:45
14-07-2003 00:05:00
16-07-2003 21:25:00
20-07-2003 20:00:00
23-07-2003 21:25:00
25-07-2003 00:25:00
27-07-2003 00:30:00
27-07-2003 20:00:00

Min makro ser nu sådan ud:

Workbooks.OpenText Filename:= _
        "C:\Documents and Settings\jesper_j\skrivebord\GRP-id.txt", Origin:=xlWindows, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:=";", FieldInfo:=Array(Array(1, 1 _
        ), Array(2, 1), Array(3, 4), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
        , 1), Array(16, 1), Array(17, 1))
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range("A1:DV27").Select
    Range(Selection, Selection.End(xlToLeft)).Select
    Range("A1:Q27").Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("GRP").Select
    ActiveWindow.SmallScroll Down:=-12
    Range("C2").Select
    ActiveWindow.ScrollColumn = 1
    Range("A2").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll ToRight:=0
    Windows("GRP-id.txt").Activate
    ActiveWindow.Close
    ChDir "I:\Export\Opfølgning Jesper"
    Workbooks.Open Filename:= _
        "I:\Export\Opfølgning Jesper\Opfølgning 2002 Total2.xls"
    Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("Tv2-visninger").Select
    ActiveWindow.SmallScroll Down:=-18
    Range("A1").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll ToRight:=0
    Windows("Opfølgning 2002 Total2.xls").Activate
    ActiveWindow.Close
    Workbooks.Open Filename:="I:\Export\Opfølgning Jesper\Opfølgning 2002 PG.xls"
    Range("A4").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Windows("performance-forsøg.xls").Activate
    Sheets("Hele fladen").Select
    Range("A3").Select
    ActiveSheet.Paste
    Windows("Opfølgning 2002 PG.xls").Activate
    ActiveWindow.Close
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("Vejledning").Select
    Range("A1").Select
End Sub

Jeg har læst den side dit link viser til, men jeg bliver ikke så meget klogere!? Håber du har et genialt forslag :o)
Avatar billede ly Nybegynder
22. august 2003 - 09:14 #13
Datoerne er i kollone C !!!
Avatar billede thor.ostergaard Nybegynder
22. august 2003 - 09:17 #14
Kan du ikke sende mig dit regneark og din datafil?
Du kan sende til thor@kursusmaterialer.dk
Avatar billede thor.ostergaard Nybegynder
22. august 2003 - 10:06 #15
Det ser meget mærkeligt ud - hvis man importerer din tekstfil "manuelt" gør den det helt korrekt, men gør man det med en makro går det galt. Der er forskellige rapporteringer af den slags problemer på nettet, men ikke nogle forklarer, hvad man så skal gøre.
Prøv at skifte Array(3,4) til Array(3,2). Så få du datoen ind i arket som en tekst i stedet. Du kan så bruge Datoværdi funktionen til at konvertere til en dato du kan regne videre på.

Håber du kan komme videre nu.
Avatar billede ly Nybegynder
22. august 2003 - 10:10 #16
JUHUUUUUU - Det virker nu! Mange mange tak for hjælpen. Og ja, jeg vil give dig ret i at det er meget underligt at det fungerer når man går det manuelt, men ikke når man gør det via en makro - men ændringen fra Array(3,4) til Array(3,2) hjalp altså !!!!
Avatar billede thor.ostergaard Nybegynder
22. august 2003 - 10:13 #17
Ja, den var sjov :-)
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