Avatar billede mfynbo Juniormester
28. september 2016 - 09:03 Der er 10 kommentarer og
1 løsning

opsplitning af tekststykke i celle med ; som opsplitter ..uden at bruge text to column

Hej Eksperter, jeg har et tekststykke, som er i en celle, men vil gerne have den splittet op i hver sin celle, hvor ; er opsplitteren. Hvordan går jeg uden at bruge text to column?
Se teksstykke nedenfor.

Australia;B2B;APAC;Australia;B2B

takker.
Morten
Avatar billede ebea Ekspert
28. september 2016 - 09:20 #1
Må jeg spørge, hvorfor du ikke kan bruge Text to Column?
Den gør jo ellers det som du efterspørger, uden at skal bruge formler, eller VBA.
Avatar billede mfynbo Juniormester
28. september 2016 - 09:49 #2
Hej, da det gør den.
Skal bruge det til en model, hvor jeg får data som ovenfor.
Jeg ønsker kun at brugeren fremadrettet skal paste ind i modellen og ikke tænke på, hvad der skal laves om til hvad.
Mvh.
m.
Avatar billede Max_P_Larsen Seniormester
28. september 2016 - 09:56 #3
Uden Tekst til kolonner-funktionen skal du først og fremmest bestemme positionerne, hvor semikolonerne står. Hvis din tekst står i celle A1, kan du finde det første semikolons position således: =SØG(";";A1).

Den første del af teksten kan "udtrækkes" således: =VENSTRE(A1;SØG(";";A1)-1) <= træk 1 fra for ikke at få semikolon med i "udtrækket".

Det næste semikolon finder du således: =SØG(";";A1;SØG(";";A1)+1). Her startes søgning +1 karakter efter det første semikolon.

Anden del af teksten kan så udtrækkes med MIDT-funktionen:
=MIDT(A1; SØG(";";A1)+1 ; SØG(";";A1;SØG(";";A1)+1) - SØG(";";A1)+1)

Således fortsætter du, indtil du har været igennem alle semikoloner. Det kan være en ide at beregne positionerne først og så bruge disse værdier i MIDT-funktionerne, så de ikke bliver for lange og uoverskuelige.

Så det kan da lade sig gøre, men det er noget omstændigt, når Tekst til kolonner-funktionen også giver det ønskede resultat. Hvis udfordringen er, at du har kolonner imellem "split-teksterne" og det område, hvor du vil have resultatet, kan du f.eks. kopiere split-teksterne over i et midlertidigt ark, splitte, og så kopiere det opsplittede tilbage.


Mvh Max
Avatar billede mfynbo Juniormester
28. september 2016 - 09:59 #4
mange tak, det var den jeg kiggede efter.
Avatar billede supertekst Ekspert
28. september 2016 - 10:00 #5
Alternativ:
Sub opsplitningAf()
Dim totalTekst As Variant, f As Integer
    totalTekst = Split(Range("A1"), ";")
    For f = 0 To UBound(totalTekst)
        Range("A1").Offset(0, f + 1) = totalTekst(f)
    Next f
End Sub
Avatar billede mfynbo Juniormester
28. september 2016 - 10:13 #6
Hej Max, kan jeg få dig til at skrive no 2 for midt.. så jeg kan se mønsteret i den.
roder lidt rundt i det.
tak.
m
Avatar billede Max_P_Larsen Seniormester
28. september 2016 - 10:22 #7
Send mig en e-mail til maxzpad@gmail.com. Så sender jeg et fuldt eksempel retur.


Mvh Max
Avatar billede Max_P_Larsen Seniormester
28. september 2016 - 10:36 #8
supertekst:

Man kan også droppe loop'et

Range("A1").Offset(0, 1).Resize(1, UBound(totalTekst) + 1) = totalTekst


Mvh Max
Avatar billede xl-Enthusiast Ekspert
28. september 2016 - 11:00 #9
En anden formelmulighed:

=TRIM(MID(SUBSTITUTE($A1;";";REPT(" ";999));COLUMN(A1)*999-998;999))

Dansk:
FJERN.OVERFLØDIGE.BLANKE(MIDT(UDSKIFT($A1;",";GENTAG(" ";999));KOLONNE(A1)*999-998;999))
Avatar billede kabbak Professor
28. september 2016 - 20:04 #10
Prøv denne kode i arkets modul

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim totalTekst As Variant, F As Long, antalRk As Long, Ud As Integer
    antalRk = ActiveSheet.UsedRange.Rows.Count
    Application.EnableEvents = False
    Application.ScreenUpdating = False
   
    For F = 1 To antalRk
        totalTekst = Split(Range("A" & F), ";")
        Ud = UBound(totalTekst)
        ActiveSheet.Range(Cells(F, 2), Cells(F, 2 + Ud)) = totalTekst
    Next F
   
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
Avatar billede mfynbo Juniormester
29. september 2016 - 08:25 #11
Tak for hjælpen!
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

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