Avatar billede sunero Nybegynder
12. januar 2010 - 13:23 Der er 6 kommentarer og
1 løsning

Opsplitning af én kolonne til flere i Excel

Hejsa,

Jeg har en kolonne der indeholder lange tekst strenge. Denne kolonne vil jeg gerne have splittet op i flere kolonner på f.eks. 70 tegn.

Så det jeg er ude efter, er en macro/funktion der kan finde det sidste mellemrum før tegn 70 og flytte denne substreng til f.eks kolonne B. Den resterende streng skal derefter igen udsøges for sidste mellemrum før tegn 70 og substrengen flyttes til kolonne C. Dette skal fortsætte til den oprindelige streng er tom.

Er der nogen der har en idé til hvordan dette gøres?
Avatar billede supertekst Ekspert
12. januar 2010 - 15:21 #1
VBA-koden indsættes som programkode under relevante Ark

Public Sub opdel()
Const maxTegn = 70
Dim antalRækker As Long
Dim ræk As Long, tekstA As String, tekstDel As String
Dim ix As Integer, kolNr As Byte

    Application.ScreenUpdating = False
   
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
   
    For ræk = 1 To antalRækker
    kolNr = 2
   
        tekstA = Range("A" & CStr(ræk))
       
        While Len(tekstA) > maxTegn
            For ix = maxTegn To 1 Step -1
                If Mid(tekstA, ix, 1) = " " Then
                    tekstDel = Left(tekstA, ix)
                    Cells(ræk, kolNr) = tekstDel
                    tekstA = Mid(tekstA, ix + 1)
                    kolNr = kolNr + 1
                    Exit For
                End If
            Next ix
        Wend
    Next ræk
   
    ActiveSheet.Columns.AutoFit
    Application.ScreenUpdating = False
   
    MsgBox ("Opdeling udført")
End Sub
Avatar billede sunero Nybegynder
12. januar 2010 - 16:26 #2
Hejsa,

Der er lige en lille ting. Hvis jeg kører VBA'en på linien :

Mål: 20 x 20 mm 10 forskellige lagerøjs motiver Kan vaskes på 50 grader.

kommer der kun :

Mål: 20 x 20 mm 10 forskellige lagerøjs motiver Kan vaskes på 50

i kolonne B og intet i kolonne C

Er det mig der ikke har afviklet koden korrekt ?
Avatar billede excelent Ekspert
12. januar 2010 - 17:25 #3
prøv

Sub DelOp()
kol = 1
rk = Cells(65500, 1).End(xlUp).Row
For t = 1 To rk
x = Cells(t, 1)
While x <> ""
kol = kol + 1
stk = InStrRev(Left(x, 70), " ", -1, vbTextCompare)
If stk = 0 Or Len(x) < 70 Then y = Left(x, 70) Else y = Left(x, stk)
x = Replace(x, y, "")
Cells(t, kol) = y
Wend
kol = 1
Next
End Sub
Avatar billede supertekst Ekspert
12. januar 2010 - 17:25 #4
Nej - der manglede lige en "krølle"

Rem Version 2

Public Sub opdel()
Const maxTegn = 70
Dim antalRækker As Long
Dim ræk As Long, tekstA As String, tekstDel As String
Dim ix As Integer, kolNr As Byte

    Application.ScreenUpdating = False
   
    antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
   
    For ræk = 1 To antalRækker
    kolNr = 2
   
        tekstA = Range("A" & CStr(ræk))
       
        While Len(tekstA) > maxTegn
            For ix = maxTegn To 1 Step -1
                If Mid(tekstA, ix, 1) = " " Then
                    tekstDel = Left(tekstA, ix)
                    Cells(ræk, kolNr) = tekstDel
                    tekstA = Mid(tekstA, ix + 1)
                    kolNr = kolNr + 1
                    Exit For
                End If
            Next ix
        Wend
       
        If Len(tekstA) > 0 Then
            Cells(ræk, kolNr) = tekstA
        End If
    Next ræk
   
    ActiveSheet.Columns.AutoFit
    Application.ScreenUpdating = False
   
    MsgBox ("Opdeling udført")
End Sub
Avatar billede sunero Nybegynder
13. januar 2010 - 10:44 #5
Nu spiller det bare. Tusind tak :-)
Avatar billede sunero Nybegynder
13. januar 2010 - 10:47 #6
Smider du et svar.
Avatar billede supertekst Ekspert
13. januar 2010 - 10:55 #7
Ok - selv tak
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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