Avatar billede kmlp Nybegynder
06. februar 2003 - 16:08 Der er 5 kommentarer og
1 løsning

Datoformatering i makro

Via en makro importerer jeg nogle datafiler, som bl.a. indeholder felter med datoer i formatet dd/mm/yy.
For at kunne sortere på disse vil jeg gerne ændre formatet til dd-mm-yy (eller et andet egnet format).
Det går fint, hvis jeg gør det manuelt (markerer kolonnerne, vælger Formatér Celler og vælger formatet dd-mm-yy).
Men jeg vil gerne klare det inde fra makroen. Og her støder jeg på det problem, at kun datoer til og med den 12. i måneden bliver konverteret. Det lugter jo af amerikansk datoformat.
Ved at indspille makroen og læse den genererede kode kan jeg da også konstatere, at den manuelle formatering dd-mm-yy indspilles som m/d/yy.
Og det hjælper ikke, at man selv retter det i koden.
Summa summarum: Det ser ud til, at Excel kan håndtere de forskellige formater, men at VBA ikke kan.
Hvad er løsningen?
(Jeg kører Excel 97 SR2. Formatet af mine kildedata vil jeg helst ikke pille ved)
Avatar billede b_hansen Novice
06. februar 2003 - 16:17 #1
en mulig løsning kunne jo være at lave en søg og erstat på din datoadskiller "/"
Avatar billede kmlp Nybegynder
06. februar 2003 - 16:24 #2
Nej, igen: Det virker fint ved manuel formatering, men gør man det fra makroen, virker det kun på datoer til og med den 12. i måneden.
Avatar billede kmlp Nybegynder
06. februar 2003 - 16:26 #3
En præcisering: Datoadskilleren bliver selvfølgelig erstattet hele vejen, men kun datoerne til og med den 12. i måneden bliver opfattet som datoer.
Avatar billede b_hansen Novice
06. februar 2003 - 16:47 #4
har du prøvet at tilføje en ny kolonne med formlen Datoværdi() ? Den skal bare formateres som dato, så fungerer det.
Avatar billede bak Forsker
06. februar 2003 - 17:45 #5
Sådan kan du gøre i VBA. den er ligeglad med om din dato er dd/mm/yy eller dd-mm-yy.

Sub LavDato()
Dato = DateValue(Range("A1"))
'range("a1")=Dato
End Sub
Avatar billede kmlp Nybegynder
06. februar 2003 - 18:21 #6
Problemet er ikke så meget det med separatoren. Problemet er håndteringen af datoer i formatet dd-mm-yy (uanset separator). Hvis dd er større end 12 opfatter VBA det som tekst, og DateValue returnerer i så fald #VÆRDI.
Men jeg har løst det ved at indsætte en kolonne hvor nabocellerne får formlen "=IF(ISTEXT(RC[-1]),DATEVALUE(RC[-1]),RC[-1])".
Så vidt jeg kan se, er jeres forslag det samme udført i hhv. Excel og VBA, så b_hansen får pointene for at komme først med inspirationen.
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