Avatar billede mitrine Nybegynder
10. februar 2005 - 11:05 Der er 13 kommentarer og
2 løsninger

Flytning af data i en string

Spørgsmålet går ud på :

Makroen åbner en txt fil i regneark og arbejder med det, mit problem er så at min dato kolone står således: 20050211
(d. 11 feb. 2005)  og for at jeg kan bruge den skal den stå som følgene: 11022005 , hvordan gør jeg det?? jeg kan ikke bruge replace da det drejer sig om 365 forskellige datoer og arket er på 10000 linjer så det vil blive for omstændigt, men kan det overhovedet lade sig gøre??
Hjææææp jeg mangler svar hurtigt:-)
Avatar billede martin_moth Mester
10. februar 2005 - 13:06 #1
Dvs. du har en masse celler, hvor der står (f.eks) 20050211 som skal skiftes til?

Jamen, det er LIGE noget for en VBA macro - skal nok lave den for dig...

Skal bare vide - i hvilke celler står datoerne - og er de ALTID med 8 cifte (så der står 0101 for første januar, og ikke 11 for første januar)
Avatar billede martin_moth Mester
10. februar 2005 - 13:08 #2
Og står de lige i røven af inanden (f.eks. celle A1 - A1000), eller er der mellemrum rundt omkring)

Skal bare præcist vide hvor alle datoerne står, så skal jeg nok lave det
Avatar billede martin_moth Mester
10. februar 2005 - 13:43 #3
Hvis du har følgende data i dit regneark - som eksempel

A1: 20050209
A2: 20050210
A3: 20050211
A4: 20050212
A5: 20050213
A6: 20050214
A7: 20050215
A8: 20050216
A9: 20050217
A10: 20050218

Så prøv at kør følgende kode, og se hvad der sker:

Sub MacroSkiftdato()

Dim lngRowStart As Long
Dim lngRowEnd As Long
Dim lngCol As Long
Dim i As Long
Dim dd As String * 2
Dim mm As String * 2
Dim yyyy As String * 4
Dim Olddate As String * 8

lngCol = 1 '1=kolonne A, 2 = kolonne B osv. ret selv
lngRowStart = CLng(Val(InputBox("Angiv startrække for datoer", "ANGIV STARTRÆKKE", "1")))
lngRowEnd = CLng(Val(InputBox("Angiv slutrække for datoer", "ANGIV SLUTRÆKKE", "10")))
For i = lngRowStart To lngRowEnd
  If Len(Trim((Cells(i, lngCol).Value))) = 8 Then
    Olddate = Trim(CStr(Cells(i, lngCol).Value))
    yyyy = Left(Olddate, 4)
    mm = Mid(Olddate, 5, 2)
    dd = Right(Olddate, 2)
    Cells(i, lngCol).Value = "'" & dd & "-" & mm & "-" & yyyy
  End If
Next i
MsgBox "færdiiiiiig"
End Sub
Avatar billede mitrine Nybegynder
10. februar 2005 - 14:28 #4
Alle datoerne står i kol. e de starter i e2 og slutter et ukendt sted, uden mellemrum.  :-)
Avatar billede mitrine Nybegynder
10. februar 2005 - 14:33 #5
Din makro virker FANTASTISK :-D, nu skal jeg bare finde ud af at rette den til...
Avatar billede mitrine Nybegynder
10. februar 2005 - 14:34 #6
Og ja dato er altid med 8 cifre.
Avatar billede mitrine Nybegynder
10. februar 2005 - 14:36 #7
Kan man måske lave noget smart så man undgår input boxen?
Avatar billede martin_moth Mester
10. februar 2005 - 14:41 #8
ja. 2 sek
Avatar billede martin_moth Mester
10. februar 2005 - 14:47 #9
Så - starter i E2, fortæstter med E3, E4, ... indtil der nås en celle som ikke har en 8-cifret dato i sig (f.eks. en tom celle)

Sub MacroSkiftdato()

Dim lngCol As Long
Dim i As Long
Dim dd As String * 2
Dim mm As String * 2
Dim yyyy As String * 4
Dim Olddate As String * 8

lngCol = 5 '1=kolonne A, 2 = kolonne B osv. ret selv
For i = 2 To 65532 '(65532 = maksimalt antal rækker)
  If Len(Trim((Cells(i, lngCol).Value))) = 8 Then
    Olddate = Trim(CStr(Cells(i, lngCol).Value))
    yyyy = Left(Olddate, 4)
    mm = Mid(Olddate, 5, 2)
    dd = Right(Olddate, 2)
    Cells(i, lngCol).Value = "'" & dd & "-" & mm & "-" & yyyy
  Else
    MsgBox "så slutter vi her - række " & i
    Exit For
  End If
Next i

End Sub
Avatar billede mitrine Nybegynder
10. februar 2005 - 20:35 #10
1000 tak det virker perfekt!!
Avatar billede mitrine Nybegynder
10. februar 2005 - 20:50 #11
Hvis du ikke har fået dine point så skrev lige, jeg har trykket på "accepter" 20 gange men jeg syntes ikke jeg kan se der sker noget?  :-)
Avatar billede kabbak Professor
10. februar 2005 - 21:40 #12
mitrine > du skal makere navnet i boksen til venstre først ;-)
Avatar billede martin_moth Mester
11. februar 2005 - 08:41 #13
jeg har ikek fået dem .. :o)
Avatar billede mitrine Nybegynder
11. februar 2005 - 09:12 #14
SÅ skulle den være der:-) Hvor er det altså dejligt at der findes så dygtige og hjælpsomme mennesker.....og tak for hurtig respons :-)
Avatar billede martin_moth Mester
11. februar 2005 - 11:20 #15
Du skulle måske tilføje "smukke" også...

Og beskedne!

;o)

/Martin
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
Kurser inden for grundlæggende programmering

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