21. oktober 2009 - 10:08Der er
6 kommentarer og 1 løsning
Del ved sidste hele ord
Hej Hvordan deler jeg en celle i Excel ved sidste hele ord inden tegn 60, således at den første del af sætningen kommer i en celle og resten i næste celle?
Teksten kunne være denne: På leveringen af 02-02-2009 ville kunden ikke modtage varerne!!! kunden mener levering ved forkert.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Denne kode fordeler teksten i markerede celler på de to kolonner til højre for. Så du markerer teksten i B-kolonnen og afspiller makroen.
Er teksten i en af de markerede kolonner for kort (altså kortere end 60, deles den ikke, men makroen stopper her med en fejl. Du må så markere resten igen og fortsætte. Den kan nok godt skrives om så tekster kortere end 60 overføres til kolonne C.
Sub DelTekstFoer60() On Error GoTo fejl: Dim Mlr As Byte, Txt As String For Each c In Selection.Cells Txt = c.Value Mlr = InStrRev(Txt, " ", 60) c.Offset(0, 1).Value = Left(Txt, Mlr - 1) c.Offset(0, 2).Value = Mid(Txt, Mlr + 1, Len(Txt)) 'c.Clear Next c Exit Sub fejl: If Err.Number = 5 Then MsgBox "Teksten er ikke 60 lang, så den kan ikke deles", vbOKOnly + vbExclamation End If End Sub
Fjern ' foran 'c.Clear, hvis B-kolonnen skal slettes, når teksten er fordelt.
Skal kortere tekster bare flyttes til C-kolonnen kan følgende variant bruges:
Sub DelTekstFoer60()
Dim Mlr As Byte, Txt As String For Each c In Selection.Cells Txt = c.Value Mlr = InStrRev(Txt, " ", 60) If Len(Txt) <= 60 Then c.Offset(0, 1).Value = c.Value Else c.Offset(0, 1).Value = Left(Txt, Mlr - 1) c.Offset(0, 2).Value = Mid(Txt, Mlr + 1, Len(Txt)) End If c.Clear Next c Exit 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.