28. januar 2018 - 15:55
Der er
1 kommentar og
1 løsning
Spitning af tekst i ét felt til flere felter
Har denne tekststreng i A1 henholdsvis A2
Kongensgade 9, 3. tv. 6700 Esbjerg
Stormgade 676710 Esbjerg V
som jeg ønsker opdelt således det står således i
B1 C1 D1
Kongensgade 9, 3. tv. 6700 Esbjerg
Stormgade 67 6710 Esbjerg V
Tekstfunktionerne i Excel løser ikke umiddelbart en sådan opgave - der må én eller anden VBA-kode til?
28. januar 2018 - 16:18
#1
Noget i stil med dette vil kunne klare det. Den søger først 4 sammenhængende tal for at finde postnummeret, og bruger så postnummerets position til at skille det ad
Sub Split()
LastRow = ActiveSheet.UsedRange.Rows.Count
For x = 1 To LastRow
y = Len(Cells(x, 1))
For Z = 1 To y
If IsNumeric(Mid(Cells(x, 1), Z, 4)) Then
Cells(x, 2) = Left(Cells(x, 1), Z - 4)
Cells(x, 3) = Mid(Cells(x, 1), Z - 2, 4)
Cells(x, 4) = Mid(Cells(x, 1), Z + 4, 999)
End If
Next
Next
End Sub
28. januar 2018 - 16:48
#2
Sub SplitAdr()
x0 = InStrRev(ActiveCell.Value, 0)
x1 = InStrRev(ActiveCell.Value, 1)
x2 = InStrRev(ActiveCell.Value, 2)
x3 = InStrRev(ActiveCell.Value, 3)
x4 = InStrRev(ActiveCell.Value, 4)
x5 = InStrRev(ActiveCell.Value, 5)
x6 = InStrRev(ActiveCell.Value, 6)
x7 = InStrRev(ActiveCell.Value, 7)
x8 = InStrRev(ActiveCell.Value, 8)
x9 = InStrRev(ActiveCell.Value, 9)
x = Application.WorksheetFunction.Max(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9) - 3
Post = Mid(ActiveCell, x, 4)
by = Mid(ActiveCell, x + 4, 99)
gade = Replace(Replace(ActiveCell, Post, ""), by, "")
ActiveCell.Offset(0, 1) = gade
ActiveCell.Offset(0, 2) = Post
ActiveCell.Offset(0, 3) = by
ActiveCell.Offset(1, 0).Select
End Sub