Avatar billede kgndksv Juniormester
25. juli 2012 - 18:23 Der er 3 kommentarer og
1 løsning

identificere linieskift i en celle i excel

Hej

Kan man identificere hvornår der er linieskift i en celle ?

Jeg har en række celler som indeholder navn, adresse og postnummer i samme celle, men på hver sin linie i cellen.. det eneste jeg lige umiddelbart kan se at man kan gøre for at identificere hvert "led" og få dem ud i hver sin celle er ved at kunne søge cellen til linieskift - kan man det??
Avatar billede supertekst Ekspert
25. juli 2012 - 18:25 #1
Via VBA kan du får "hver del" placeret separat via Split-funktionen
Avatar billede kjulius Novice
26. juli 2012 - 00:01 #2
I cellen bliver et linjeskift (Alt+Enter) lagret som et LF kontroltegn, hvilket er det samme som TEGN(10).

Så hvis du er sikker på, at din celle altid indeholder tre linjer, kan du bruge MIDT og FIND funktionerne til at opdele teksten.

Eksempel, hvis teksten der skal opdeles ligger i celle A1:

Første linje fra teksten kan fås med
=MIDT(A1;1;SØG(TEGN(10);A1)-1)

(man kunne også have brugt VENSTRE funktionen her i stedet for MIDT og sparet en parameter, nemlig starpositionen 1)

Anden linje fra teksten kan fås med
=MIDT(A1;FIND(TEGN(10);A1)+1;FIND(TEGN(10);A1;FIND(TEGN(10);A1)+1)-FIND(TEGN(10);A1)-1)

Og til sidst kan tredje linje fås med
=MIDT(A1;FIND(TEGN(10);A1;FIND(TEGN(10);A1)+1)+1;10000)

(Her har jeg bare angivet en stor værdi for delstrengshlængden på 10000, men man kan naturligvis også beregne sig frem til delstrengslængden - det bliver dog en længere smøre, og er det ikke værd i dette tilfælde, synes jeg).


Alternativt kan du naturligvis som Supertekst angiver lave noget VBA kode, hvor Split funktionen kan bruges til at returnere en array med alle delstrengene, som du så kan tage fat i enkeltvis.

Hvis du har flere end tre linjer pr celle, bliver det hurtigt meget indviklet at opdele via formler, så da vil jeg absolut anbefale dig at benytte VBA.
Avatar billede kgndksv Juniormester
26. juli 2012 - 13:05 #3
Det var lige præcis Tegn(10) Jeg skulle bruge, kjulius - Sender du et svar!

Tak for input Supertekst, men min celle indeholder, som sagt navn, adresse og postnummer+ bynavn fordelt på 3 linieskift. derfor kan jeg ikke helt overskue, hvordan jeg kan bruge Split-funktionen.

Min kode endte således hvis andre skulle kunne bruge den:

Den overførte variabel er blot række nummeret


Sub SplitCell(ByRef i As Integer)

Dim xXx As Integer
Dim oOo As Integer
Dim SplitCell As Range
Dim SplitCount1 As Integer, SplitCount2 As Integer

Set GetSheet = ThisWorkbook.Worksheets("VBA Get address")

xXx = 1

Set SplitCell = GetSheet.Cells(i, 3)

'Tjekker hvor mange linjeskift der er i cellen

For e = 1 To Len(SplitCell)
    If Mid(SplitCell, e, 1) = Chr(10) Then
        xXx = xXx + 1
    End If
Next e

'Finder hvert linje og tildeler linjen en celle

SplitCount1 = 1

For oOo = 1 To xXx

    SplitCount2 = InStr(SplitCount1, SplitCell, Chr(10), vbTextCompare)

    SplitLength = SplitCount2 - SplitCount1

    SplitCol = GetSheet.Cells(i, 300).End(xlToLeft).Column + 1

    If SplitLength > 1 Then
        GetSheet.Cells(i, SplitCol) = Mid(SplitCell, SplitCount1, SplitLength)
    End If

    SplitCount1 = SplitCount2 + 1

Next

End Sub
Avatar billede kjulius Novice
01. august 2012 - 05:22 #4
Her kommer så mit svar...
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
Kurser inden for grundlæggende programmering

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