25. juli 2012 - 18:23Der 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??
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.
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
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.