Avatar billede idani Praktikant
03. december 2008 - 11:36 Der er 3 kommentarer og
1 løsning

Opdeling af celler 2

Hejsa
Jeg har været så heldig at en af jer kloge hoveder har skrevet nedenstående makro for mig.
Den splitter en adresse op
F.eks Albertlundsvej 127 st.tv splittes op i
Kolonne f: Albertlundsvej
Kolonne g: 127
kolonne h: st.tv

Og det fungerer noget nært perfekt.

Men når den skal skille en adresse som f.eks syrenkæden 23
Så kommer den til at se sådanne ud
kolonne f: Syrenkæden
Kolonne g: "blank"
Kolonne h: "blank"
Hvilket vil sige at den "glemer" at flytte hus nummer også?
Nogen som kan fortage ændringen sådan lige med et snuptag ;o)

Sub AdrTilKol()
    For Each c In Range("e2:e4000").Cells
        If Not IsEmpty(c.Value) Then
            adr = c.Value
            For i = 1 To Len(adr)
                If IsNumeric(Mid(adr, i, 1)) Then
                    vej = Mid(adr, 1, i - 1)
                    Exit For
                End If
 
                rest = Mid(adr, i + 1, Len(adr))
                For h = 1 To Len(rest)
                    If Not IsNumeric(Mid(rest, h, 1)) Then
                        husnr = Mid(rest, 1, h - 1)
                        Exit For
                    End If
                Next h
                sidst = Mid(rest, h, Len(rest))
            Next i
        End If
        c.Offset(0, 1).Value = vej
        c.Offset(0, 2).Value = husnr
        c.Offset(0, 3).Value = sidst
    Next c
End Sub

Hilsen
Ida
Som syntes at eksperten er et supert værktøj til
Avatar billede jkrons Professor
03. december 2008 - 12:56 #1
Prøv med denne version:

Sub AdrTilKol()
    For Each c In Range("e10:e12").Cells
        If Not IsEmpty(c.Value) Then
            adr = c.Value
            If InStr(adr, " ") = InStrRev(adr, " ") And IsNumeric(InStr(adr, " ") + 1) Then
                vej = Mid(adr, 1, InStr(adr, " "))
                husnr = Mid(c.Value, InStr(c.Value, " ") + 1, Len(adr))
                GoTo skriv
            End If
            For i = 1 To Len(adr)
                If IsNumeric(Mid(adr, i, 1)) Then
                    vej = Mid(adr, 1, i - 1)
                    Exit For
                End If
 
                rest = Mid(adr, i + 1, Len(adr))
                For h = 1 To Len(rest)
                    If Not IsNumeric(Mid(rest, h, 1)) Then
                        husnr = Mid(rest, 1, h - 1)
                        Exit For
                    End If
                Next h
                sidst = Mid(rest, h, Len(rest))
            Next i
        End If
skriv:
        c.Offset(0, 1).Value = vej
        c.Offset(0, 2).Value = husnr
        c.Offset(0, 3).Value = sidst
    Next c
End Sub

Det er ikek sikkert, den dækker alle varianter for så vidt jeg husker kunne der forekomme mange forskellige med og uden mellemrum.
Avatar billede idani Praktikant
03. december 2008 - 13:30 #2
det er rigtigt der kunne komme mange varianter - men den første ramte faktisk temmelig plet fra starten af - det var ikke meget som jeg selv skulle kigge på - altså bortset fra det med "kun husnummer"
Fedt at du gad hjælpe.
smider du lige et par svar begge steder??
Avatar billede idani Praktikant
03. december 2008 - 13:34 #3
perfekt den virker - nu er det virkelig minimalt jeg skal gennemgå manuelt - som sagt smid lige et par svar...

Hilsen
IDa
Avatar billede jkrons Professor
03. december 2008 - 15:39 #4
Et svar :-)
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