24. september 2015 - 20:51Der er
2 kommentarer og 1 løsning
Excel makro
Hej alle Jeg har nu siddet og kæmpet lidt med en makro der skal kunne gøre visse ting alt efter indhold. Jeg har en celle med en adresse, data i den kan være forskellige giver lige et par eks. : Lundtoftegade 54, 1 th 2400 København NV Lundtoftegade 54, 1 -3 2400 København NV Lundtoftegade 54, 1 th -3 2400 København NV Lundtoftegade 54, 1 2400 København NV Lundtoftegade 54 B, 1 2400 København NV Min slut streng skal se sådan ud: Lundtoftegade 54B, 1, 2400 København NV eller Lundtoftegade 54, 1 th,-3, 2400 København NV eller Lundtoftegade 54, 1, 2400 København NV Det er altså kommaerne der skal sættes rigtigt. Syntes godt nok den er lidt tricky så alt hjælp er velkommen. Minus 3 bliver lavet om til Dør 3
1) fjern kommaer 2) med instr() findes 2. mellemrum hvis der derefter kommer et bogstav, så fjernes 2. mellemrum - og find nyt 2. mellemrum 3) med instrv() findes bagerste mellemrum hvis der ikke er tal foran, så find næste mellemrum bagfra. 4) sæt komma ved position 2) 5) sæt komma ved position 3) 6) hvis der mellem 2) position og 3) position er '-' så erstat det med 'dør' 7) erstat evt dobbeltmellemrum med enkelt mellemrum
Fjern komma var det første jeg gjorde men det men det er lidt omsonst. Nogle vejnavne er jo mere end 1 ord og nogle gange er der ikke sal på og andre gange kun sal(tal) og ingen th eller tv. Syntes det er en lidt svær ting at løse så det virker på alt. men det er måske bare mig :) Men tak for kommentar
Nå fik klaret det. Men det er ikke køn kode men det virker :) Her er koden hvis andre er interesseret: Sub Komma() Dim Vej As Variant Dim Addr As String Dim Vejnavn As String Dim Lent As Integer Dim MidAddr As String Dim Antal As Integer Dim Numi As Integer Dim Tel As Integer Antal = 0 Tel = 0 Numi = 0 Lent = 0 MidAddr = Cells(3, 4) lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row Addr = Cells(3, 2) For a = 3 To lastRow Addr = Cells(a, 2) Addr = Replace(Addr, ",", " ", 1) Addr = Replace(Addr, "-", "Dør", 1) Vej = Split(Addr, " ") Antal = UBound(Vej) For i = 0 To UBound(Vej) If IsNumeric(Vej(i)) Then If Tel = 2 Then If i + 2 = Antal Then Vejnavn = Vejnavn + Vej(i) + " " + Vej(i + 1) + " " + Vej(i + 2) Exit For Else Vejnavn = Vejnavn + Vej(i) + " " + Vej(i + 1) End If
Tel = Tel + 1 i = i + 1 End If If Tel = 1 Then If IsNumeric(Vej(i + 1)) Then Vejnavn = Vejnavn + Vej(i) + ", " Else If Len(Vej(i)) = 4 Then Vejnavn = Vejnavn + "," + Vej(i) + " " + Vej(i + 1) Else Vejnavn = Vejnavn + Vej(i) + " " + Vej(i + 1) + ", " End If
i = i + 1 End If
Tel = Tel + 1
End If If Tel = 0 Then If Not IsNumeric(Vej(i + 1)) And Len(Vej(i + 1)) = 1 Then Vejnavn = Vejnavn + Vej(i) + Vej(i + 1) + ", " i = i + 1 Else Vejnavn = Vejnavn + Vej(i) + ", " End If
Tel = Tel + 1 End If Else
Vejnavn = Vejnavn + Vej(i) + " "
End If Next Cells(a, 2).Value = Vejnavn For k = 0 To UBound(Vej) Vej(k) = "" Next Vejnavn = "" Tel = 0 Next End Sub Mangler kun hvis der ikke er (-) minus tegn foran dør nummer.
Synes godt om
Ny brugerNybegynder
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.