|
| tekst/tal word/excell Fra : cykelsmeden |
Dato : 08-05-04 12:49 |
|
Jeg har til excell fra en asciifil importeret nogle data, indeholdende bl.a.
personnumre.
kollonnen med personnumre måtte jeg markere og definere som tekstfelt, men
måtte efterfølgende indskrive foranstillede 0 for månederne 1-9.
De felter som blev korrigeret, fik en lille trekantmarkering i øverste
venstre hjørne.
Når jeg bruger filen som flettegtundlag i word, bliver de IKKE rettede
felter konverteret til et scientific nummer "1234. E03"
Hvordan får jeg kollonnen konverteret til tekst på en måde (med trekanten)
så word forstår det, uden manuelt at skulle i hvert felt?
finn
nb office = 2003/XP
| |
Jørgen Bondesen (08-05-2004)
| Kommentar Fra : Jørgen Bondesen |
Dato : 08-05-04 19:46 |
|
Hej Finn
Jeg har IKKE off 2003, så jeg kan tage fejl.
Når du importerer i Excel, skulle jeg mene at du på et tidspunkt, sidste
trin, kan markerer "kolonne" nederst i dialogboksen og afmærke den som
tekst, øverst til højre.
Dette gøres bl.a. for at få foranstillet 0 (nul) med. Der vil også opstå
problemer hvis det importerede tal er på mere end 15 cifre.
Sådan er det i Excel XP.
Mig bekendt starter er personnummner med dag og du skriver måned?
Prøv at "start" tallet i en celle med apostrof: '0112641234
Lad mig få en tilbagemelding, hvis du ønsker apostrof, må vi se om vi kan
fixe en makro til dig.
Med venlig hilsen
Jørgen Bondesen
"cykelsmeden" <cykelsmeden@SLETacnord.dk> wrote in message
news:409cc92a$0$219$edfadb0f@dread12.news.tele.dk...
> Jeg har til excell fra en asciifil importeret nogle data, indeholdende
bl.a.
> personnumre.
> kollonnen med personnumre måtte jeg markere og definere som tekstfelt, men
> måtte efterfølgende indskrive foranstillede 0 for månederne 1-9.
> De felter som blev korrigeret, fik en lille trekantmarkering i øverste
> venstre hjørne.
> Når jeg bruger filen som flettegtundlag i word, bliver de IKKE rettede
> felter konverteret til et scientific nummer "1234. E03"
> Hvordan får jeg kollonnen konverteret til tekst på en måde (med trekanten)
> så word forstår det, uden manuelt at skulle i hvert felt?
>
> finn
> nb office = 2003/XP
>
>
| |
Jan Kronsell (08-05-2004)
| Kommentar Fra : Jan Kronsell |
Dato : 08-05-04 21:59 |
|
"cykelsmeden" <cykelsmeden@SLETacnord.dk> skrev i en meddelelse
news:409cc92a$0$219$edfadb0f@dread12.news.tele.dk...
> Jeg har til excell fra en asciifil importeret nogle data, indeholdende
bl.a.
> personnumre.
> kollonnen med personnumre måtte jeg markere og definere som tekstfelt, men
> måtte efterfølgende indskrive foranstillede 0 for månederne 1-9.
> De felter som blev korrigeret, fik en lille trekantmarkering i øverste
> venstre hjørne.
> Når jeg bruger filen som flettegtundlag i word, bliver de IKKE rettede
> felter konverteret til et scientific nummer "1234. E03"
> Hvordan får jeg kollonnen konverteret til tekst på en måde (med trekanten)
> så word forstår det, uden manuelt at skulle i hvert felt?
>
> finn
> nb office = 2003/XP
>
Du kan prøve at køre denne makro, og se om den ikke løser problemet. (Prøv
altid på en kopi af arket først).
Sub TilTekst()
For Each c In ActiveSheet.Range("A1:A500")
c.Value = "'" & CStr(c.Value)
Next c
End Sub
Ret Range til det område, hvor du har dine personnumre.
Jan
| |
Jørgen Bondesen (09-05-2004)
| Kommentar Fra : Jørgen Bondesen |
Dato : 09-05-04 16:34 |
|
Hej Finn
Her er en lidt anden indfaldsvinkel.
'----------------------------------------------------------
' Module : Module1
' DateTime : 09-05-2004 17:25
' Author : Jørgen Bondesen
' Purpose : Correct CPR No 2 txt
'----------------------------------------------------------
Const CPR_NR_VÆGTE As String = "4327654321"
Const hil As String = "Hilsen fra JB"
Option Explicit
Sub CorrectCprNo()
'CPRNO: ddmmåå1234 = 10 cifre
'CPRNO: ddmmåå-1234 = 11 cifre
Dim LenCPRNO As String
LenCPRNO = "10"
Dim rSel As Range
Set rSel = Selection
rSel.Select
Dim rRange As Range
On Error Resume Next
Set rRange = Application.InputBox("Vælg område med CprNO.", _
hil, rSel.Address, , , , , 8)
If Err <> 0 Then Exit Sub
On Error GoTo 0
Application.ScreenUpdating = False
Dim sh As String
sh = rRange.Parent.Name
Dim shadr As String
shadr = rRange.Address
Dim firstcell As String
firstcell = InStr(1, shadr, ":", vbTextCompare)
If firstcell = "0" Then
Dim celladr As String
celladr = shadr
Else
celladr = Left(shadr, firstcell - 1)
End If
Dim c As Variant
For Each c In rRange
'Kontrol len = 10 or 11 samt ingen =
If Len(c.Value) <> LenCPRNO Or c.HasFormula = True Then
Application.Goto Reference:=Worksheets(sh).Range(c.Address)
Application.ScreenUpdating = True
MsgBox "I valgte celle er CPRNO ikke på " & LenCPRNO _
& " cifre, eller celle indeholder =." & vbCr _
& vbCr & "Korriger, og kør makro igen.", vbCritical, hil
Exit Sub
End If
'CPRNo må kun indeholde tal: 0 til 9 og bindestreg (-)
If IsNumeric(FjernTegn(c.Value, "-")) <> True Then
Application.Goto Reference:=Worksheets(sh).Range(c.Address)
Application.ScreenUpdating = True
MsgBox "I valgte celle er der IKKE et CPRNO." _
& vbCr & vbCr & "Korriger, og kør makro igen.", _
vbCritical, hil
Exit Sub
End If
If CprNr(c.Value) = "Fejl!" Then
Application.Goto Reference:=Worksheets(sh).Range(c.Address)
Application.ScreenUpdating = True
MsgBox "I valgte celle er der IKKE et CPRNO." _
& vbCr & vbCr & "Korriger, og kør makro igen.", _
vbCritical, hil
Exit Sub
End If
c.Value = "'" & CStr(c.Value)
Next c
'Første celle i Range
Application.Goto Reference:=Worksheets(sh).Range(celladr)
Set rRange = Nothing
Set rSel = Nothing
Application.ScreenUpdating = True
End Sub
Function CprNr(Nummer As String) As String
CprNr = CheckNummer(Nummer, CPR_NR_VÆGTE)
End Function
Function CheckNummer(Nummer As String, Vægte As String) As String
'leo.heuser@get2net.dk, april 2000/maj 2001
Dim Counter As Long
Dim Checksum As Long
CheckNummer = "Fejl!"
'Nummer = FjernTegn(Nummer, " ")
Nummer = FjernTegn(Nummer, "-")
'Nummer = FjernTegn(Nummer, ".")
If Len(Nummer) = Len(Vægte) Then
For Counter = 1 To Len(Vægte)
Checksum = Checksum + Mid$(Nummer, Counter, 1) * Mid$(Vægte, Counter,
1)
Next Counter
If Checksum Mod 11 = 0 Then CheckNummer = "I orden!"
End If
End Function
Function FjernTegn(Streng As String, Tegn As String) As String
Dim Dummy As Long
While InStr(Streng, Tegn)
Dummy = InStr(Streng, Tegn)
Streng = Left(Streng, Dummy - 1) & Mid$(Streng, Dummy + 1)
Wend
FjernTegn = Streng
End Function
'***************************
Med venlig hilsen
Jørgen Bondesen
| |
|
|