26. januar 2006 - 11:53Der er
14 kommentarer og 1 løsning
humm vb kode fra en celle til 3
Fra en celle eks (A1, tekst tal tekst&tal) B1 C1 D1
Den skal tage teksten fra starten hen til de første tal, teksten kan være to delt!! den tekst som må være det skal smides i B1 den første klump tal eks"1 eller 325"som hænger sammen i A1 skal smides i C1. Alt hvad der ellers er efter første klump tal skal i D1
Marker de celler der skal behandles og kør makroen
Public Sub FindOGSplit() Dim I As Long, N As Long, Første As Long, Anden As Long, C As Range For Each C In Selection For I = 1 To Len(C) If IsNumeric(Mid(C, I, 1)) Then Første = I Exit For End If Next
For N = Første To Len(C) If Not IsNumeric(Mid(C, N, 1)) Then Anden = N - 1 Exit For End If Next
C.Offset(0, 3) = Right(C, Len(C) - N) C.Offset(0, 2) = Mid(C, Første, (Anden - Første) + 1) C.Offset(0, 1) = Left(C, Første - 1) Next End Sub
den laver fejl.. man nok for de den skal dele det i 3 men det er ikke sikkert at den data kan deles
Dataen er 1. (Gade navn Kan Være i et el . flere dele) 2. (Nr Det er helt som 245) 3. (det er eks 2 th/ Bolig 4) hvis den eks tager første tal klump fra venster/ "Midt" alt hvad der er foran skal i B1,det tal som det gør det fra skal i C1, Og hvis der er et bogstav op til det tal Eks 456d Skal det i D1, Og hvis der så ellers er noget efter de tal og efter det bogstav som måske kan være op til i E1...
Public Sub FindOGSplit() Dim I As Long, N As Long, Første As Long, Anden As Long, C As Range Første = 0 Anden = 0 For Each C In Selection For I = 1 To Len(C) If IsNumeric(Mid(C, I, 1)) Then Første = I Exit For End If Next
For N = Første To Len(C) If Not IsNumeric(Mid(C, N, 1)) Then Anden = N - 1 Exit For End If Next For N = Anden To Len(C) If IsNumeric(Mid(C, N - 1, 1)) And Not IsNumeric(Mid(C, N, 1)) Then Tredie = N Exit For End If Next If Tredie > 0 Then C.Offset(0, 4) = Right(C, Len(C) - Tredie) C.Offset(0, 3) = Mid(C, Anden + 1, 1) C.Offset(0, 2) = Mid(C, Første, (Anden - Første) + 1) C.Offset(0, 1) = Left(C, Første - 1) GoTo Videre End If
If Anden > 0 Then C.Offset(0, 3) = Right(C, Len(C) - N) C.Offset(0, 2) = Mid(C, Første, (Anden - Første) + 1) C.Offset(0, 1) = Left(C, Første - 1) GoTo Videre End If If Første > 0 Then C.Offset(0, 2) = Right(C, (Len(C) - Første) + 1) C.Offset(0, 1) = Left(C, Første - 1) GoTo Videre End If Videre: Next End Sub
virker næsten... det bogstav som kommer efter det tal som den går ud efter kan der også være et mellenrum.... men hvis det så er noget efter det er det komma og hvis der ikke er et bogstav og ikke noget data efter er der ikke noget komme.
Hvis man kan gøre det så den gør sådan. Hivs det er bogstav efter tallet skal den gøre som den gør nu men er der mellemrum og så et bogstav før komma skal den slette det mellem rum og smide det bogstav som den gør nu.. og hvis der er et komma efter tallet og hvis der er et bogstav slak den tage alt efter det komma og smide det som den gør nu men skal slette det komma.
man kan gøre det så den ser om der er et komme efter første tal klump, er der det skal den tage det bogstav som er i mellen uden mellemrum, og det som er efter komme som den gør nu hvis det ikke er komma så se om der er et bogstav om det er mellem rum eller ej skal den gøre som nu
Sub test() Dim x, y, z Dim i As Long Dim elem Dim strAddress As String Dim rngCell As Range For Each rngCell In Selection strAddress = rngCell z = DoSplit(strAddress, "[^\d]+") 'vej x = DoSplit(strAddress, "[\d]+") 'nummer y = Split(Trim(Replace(strAddress, z & x, "")), ",") 'rest
rngCell.Offset(0, 1) = z rngCell.Offset(0, 2) = x i = 0 For Each elem In y If Not elem = "" Then rngCell.Offset(0, i + 3) = elem i = i + 1 End If Next Next End Sub
Function DoSplit(strValue, ptn) Dim RegEx As Object, RegExSplits As Object Dim lReturn As Long Set RegEx = CreateObject("vbscript.regexp") RegEx.Global = True RegEx.Pattern = ptn Set RegExSplits = RegEx.Execute(strValue) DoSplit = RegExSplits(0) Set RegExSplits = Nothing Set RegEx = Nothing End Function
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.