Avatar billede serverfriend Nybegynder
25. august 2006 - 11:57 Der er 12 kommentarer og
1 løsning

Fjerne bogtaver og tal fra kollonne

Jeg har 2 kolonner med tekst der fx ser sådan her ud:

Kolonne 1              Kolonne 2

NIELS ERIK JENSEN      DK ESBJERG22

Jeg vil gerne have fjernet DK (dvs. de to tal 22)
Jeg vil også gerne have at den laver alle bogstaver små bortset fra at hvert ord starter med et stort bogstav.

Dvs. at Kolonne 1 Række 1 skal indeholde:

Niels Erik Jensen

Kolonne 2 Række 1 skal indeholde

Esbjerg

Så vil det i regnearket set sådan her ud:

Niels Erik Jensen | Esbjerg

Er der en der ved om det kan lade sig gøre, og skrive hvordan?
Avatar billede supertekst Ekspert
25. august 2006 - 12:34 #1
Er mønstret i kolonne B altid det samme - alt DK BYNAVN99
Avatar billede serverfriend Nybegynder
25. august 2006 - 13:12 #2
Lande koden er altid et eller 2 bogstaver.

D HAMBORG99
DK ESBJERG99
Avatar billede serverfriend Nybegynder
25. august 2006 - 13:13 #3
Tallet efter BYNAVN er altid 2 tal
Avatar billede supertekst Ekspert
25. august 2006 - 13:39 #4
OK - er på vej med noget.........
Avatar billede supertekst Ekspert
25. august 2006 - 13:45 #5
AAAA AAAAAAA        DK ESBJERG22    Aaaa Aaaaaaa        Esbjerg
BBBBBB                DK ESBJERG22    Bbbbbb                Esbjerg
CCCCCCC CCCC CCCCCC  DK Skive 1234    Ccccccc Cccc Cccccc Skive
DDDDDDDDD DD        D HAMBORG12    Ddddddddd Dd        Hamborg

Koden anbringes i Ark1 i VBA - vinduet:

Dim antalRæk
Sub FjernTalMv()
Dim by, redBy
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
    For række = 1 To antalRæk
        Sheets(1).Cells(række, 4) = redigerKolonne(række, 1)
        by = redigerKolonne(række, 2)
        Sheets(1).Cells(række, 5) = fjernTal(by)
    Next række
   
    MsgBox ("Redigering afsluttet")
End Sub
Private Function redigerKolonne(ræk, kol)
Dim ind, red, blank As Boolean
    ind = Sheets(1).Cells(ræk, kol)
    red = ""
    blank = True
   
    For f = 1 To Len(ind)
        tegn = Mid(ind, f, 1)
        If tegn = " " Then
            red = red + tegn
            blank = True
        Else
            If blank = True Then
                tegn = UCase(tegn)
                blank = False
            Else
                tegn = LCase(tegn)
            End If
           
            red = red + tegn
        End If
    Next f
   
    redigerKolonne = red
End Function
Private Function fjernTal(ind)
Dim red, tegn, p
    red = ""
   
    p = InStr(ind, " ")
    If p > 0 Then
        ind = Mid(ind, p + 1)
    End If
   
    For f = 1 To Len(ind)
        tegn = Mid(ind, f, 1)
        If Not (tegn >= "0" And tegn <= "9") Then
            red = red + tegn
        End If
    Next f
    fjernTal = red
End Function
Avatar billede serverfriend Nybegynder
25. august 2006 - 13:57 #6
Uha :-)

Går jeg ind under Funktioner --> Makro

Hvad gør jeg så her?
Avatar billede serverfriend Nybegynder
25. august 2006 - 14:03 #7
Jeg højreklikker på ark 1 og vælger programkode, hvad så?
Avatar billede serverfriend Nybegynder
25. august 2006 - 14:12 #8
Ups, min række ser sådan her ud

Danmark | NIELS ERIK JENSEN | DK ESBJERG22
Avatar billede supertekst Ekspert
25. august 2006 - 14:24 #9
...eller fra Excel - arket - Alt+F11 - VBA-vinduet vises - vælg Ark1 - indsæt koden - start udførelsen med F5

..men "something rotten" 

Prøv at sende en mail til: pb@supertekst-it.dk - så sender jeg min model.
Avatar billede serverfriend Nybegynder
25. august 2006 - 14:33 #10
Sendt. Jeg er online igen kl. 18

Mange tak for din hjælp!
Avatar billede supertekst Ekspert
25. august 2006 - 14:54 #11
Her er koden for: (har kørt test på dit uddrag) & selv tak!
Rem Version 2
Rem =========
Dim antalRæk
Sub FjernTalMv()
Dim by, redBy
    antalRæk = ActiveCell.SpecialCells(xlLastCell).Row
   
    For række = 1 To antalRæk
        Sheets(1).Cells(række, 6) = redigerKolonne(række, 2)    'Navn tages fra kolonne B - indsættes i kolonne F
        by = redigerKolonne(række, 4)                          'By tages fra kolonne D - indsættes i kolonne H
        Sheets(1).Cells(række, 8) = fjernTal(by)
    Next række
   
    MsgBox ("Redigering afsluttet")
End Sub
Private Function redigerKolonne(ræk, kol)
Dim ind, red, blank As Boolean
    ind = Sheets(1).Cells(ræk, kol)
    red = ""
    blank = True
   
    For f = 1 To Len(ind)
        tegn = Mid(ind, f, 1)
        If tegn = " " Then
            red = red + tegn
            blank = True
        Else
            If blank = True Then
                tegn = UCase(tegn)
                blank = False
            Else
                tegn = LCase(tegn)
            End If
           
            red = red + tegn
        End If
    Next f
   
    redigerKolonne = red
End Function
Private Function fjernTal(ind)
Dim red, tegn, p
    red = ""
   
    p = InStr(ind, " ")
    If p > 0 Then
        ind = Mid(ind, p + 1)
    End If
   
    For f = 1 To Len(ind)
        tegn = Mid(ind, f, 1)
        If Not (tegn >= "0" And tegn <= "9") Then
            red = red + tegn
        End If
    Next f
    fjernTal = red
End Function
Avatar billede serverfriend Nybegynder
25. august 2006 - 19:07 #12
Mange tusind tak, det virker bare!!!
Avatar billede supertekst Ekspert
26. august 2006 - 22:59 #13
Selv tak - en fornøjelse....
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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