Jeg er ved at konvertere noget Excel til Access. I den forbindelse har jeg et regneark, som indeholder en tekststreng, som jeg gerne vil dele ud i flere rækker. Eksempel : Nuværende: test1 192.168.135.1 b2 bc e3 4a,dlfi382k,sj031ke,294kfs03
Ændres til : test1 192.168.135.1 b2 bc e3 4a test1 192.168.135.1 dlfi382k test1 192.168.135.1 sj031ke test1 192.168.135.1 294kfs03
Problemet er at jeg nu har ca. 2000 rækker og at tekststrengen i nogen tilfælde kan indeholde op til 40 individuelle numre, så det er ikke bare at lave i hånden :)
Jeg har lige lidt bonus info : Ikke alle rækker i Excel arket er ens, så man det kunne se sådan her ud : test1 192.168.135.1 b2 bc e3 4a,dlfi382k,sj031ke,294kfs03 test2 192.168.135.2 test3 192.168.135.3 1564kfa12
/Jan
Synes godt om
Slettet bruger
18. januar 2012 - 15:17#2
Bonus info? Men det hjalp dog efter min mening ikke til at tydeliggøre opgaven.
I hvilke celler har du den tekst der skal opdeles. I hvilke celler skal resultatet vises. Er strukturen altid den samme for såvidt angår de "tal" der står først. Alt der der står efter "tallene" skal det opdeles efter hvor der er komma, og hvis ikke, hvad er så kriteriet for opdelingen.
Det er uklart, hvad det er du vil. For eksempel, hvor kommer de "1564kfa12" du nævner under test3 i post #1? Og under test2, hvordan skal man her kunne vide, at der ikke skal stå noget efter "tallet"?
Det kan godt være at det ikke fremgik af posten hvad celle referancen var, beklager, det tog jeg for givet. A B C 1 test1 192.168.135.1 b2 bc e3 4a,dlfi382k,sj031ke,294kfs03 2 test2 192.168.135.2 3 test3 192.168.135.3 1564kfa12
Forventet output er: A B C 1 test1 192.168.135.1 b2 bc e3 4a 2 test1 192.168.135.1 dlfi382k 3 test1 192.168.135.1 sj031ke 4 test1 192.168.135.1 294kfs03 5 test2 192.168.135.2 6 test3 192.168.135.3 1564kfa12 osv.
Hvad der står i kolonne C er trukket ud fra et andet system og er én tekststreng adskilt af komma. Hvor det data er fremkommet, er ikke relevant for løsningen. Jeg er sikker på at der ikke står noget i det tomme felt C2. Kolonne A & B er begge ligeledes tekststrenge.
Synes godt om
Slettet bruger
18. januar 2012 - 17:12#4
Jeg trækker mig. Måske der er en VBA-ekspert der kan hjælpe. Hans
prøv denne, marker data først, den skriver i C og D kolonnen.
Public Sub udflet() Dim C As Range, Dat As Variant, R As Integer, I As Integer, X As Long X = 2 For Each C In Selection R = InStr(1, C, " ") Dat = Split(Left(C, R - 1) & Replace(Mid(C, R, 1), " ", ",") & Right(C, Len(C) - R), ",") ' splitter ved komma For I = 1 To UBound(Dat) Cells(X, 3) = Dat(0) 'skriver ip nummer i kolonne 3 = C Cells(X, 4) = Dat(I) ' skriver det andet i en sløjfe i kolonne 4 = D X = X + 1 ' holder øje med rækken Next Next End Sub
Kan nogenlunde læse og forstå koden, men når jeg kører makroen får jeg en "Invalid procedure call og argument" og her er jeg så lidt på glat is. Jeg har kørt makroen med F8 (debug/step) og det ser ud til at være når den går ind i "For I = 1 To UBound(Dat)", lige efter jeg har trykket F8 på den foregående linie, at fejlen kommer.
Ok, det må være hvor der kun står et IP nummer, denne skulde fange det.
Public Sub udflet() Dim C As Range, Dat As Variant, R As Integer, I As Integer, X As Long X = 2 For Each C In Selection R = InStr(1, C, " ") If R > 0 Then Dat = Split(Left(C, R - 1) & Replace(Mid(C, R, 1), " ", ",") & Right(C, Len(C) - R), ",") ' splitter ved komma For I = 1 To UBound(Dat) Cells(X, 3) = Dat(0) 'skriver ip nummer i kolonne 3 = C Cells(X, 4) = Dat(I) ' skriver det andet i en sløjfe i kolonne 4 = D X = X + 1 ' holder øje med rækken Next Else Cells(X, 3) = C.Value X = X + 1 End If Next End Sub
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.