Splitting Tekst naar meerdere cellen

Phil heeft een reeks van cellen die tekst bevatten. Sommige van de tekst te lang, zodat hij moet splitsen in meerdere cellen. Bijvoorbeeld, als een cel "de snelle bruine vos" en hij moet de tekst splitsen zodat geen enkel deel langer is dan 12 tekens, Phil gemakkelijk doen. Maar hij wil ervoor zorgen dat de splitsing wordt gemaakt op de spatie voor de 12e karakter, eerder dan op de exacte 12e karakter. Phil is op een verlies over hoe dit te doen.

Je zou denken dat je kon de Tekst naar kolommen hulpmiddel in Excel te gebruiken, maar het is niet goed geschikt voor de baan. Als u het gereedschap om de tekst op basis van scheidingstekens splitsen, zoals een ruimte zetten, dan eindig je met een enkel woord in elke cel. Als u het gereedschap ingesteld op de tekst te splitsen "vaste breedte," dan maakt het niet splitsen woorden in ruimten; het maakt alleen maar te zorgen dat elk stuk is ongeacht de grootte die u opgeeft.

Je zou een formule gebruiken om de gewenste resultaten te krijgen, maar dit zou resulteren in formules die verbazingwekkend lang zijn. Bijvoorbeeld, wanneer de te lange tekst in cel A3, de volgende formule kan worden gebruikt om splitsen de eerste stuk van de tekst op de ruimte vóór de 12e Eigenschappen:

= ALS (LENGTE ($ A3)> 12, ALS (ISFOUT (FIND ("", MID ($ A3,12,1)
& MID ($ A3,11,1) & MID ($ A3,10,1) & MID ($ A3,9,1) & MID ($ A3,8,1)
& MID ($ A3,7,1) & MID ($ A3,6,1) & MID ($ A3,5,1) & MID ($ A3,4,1)
& MID ($ A3,3,1) & MID ($ A3,2,1))), MID ($ A3,1,1), MID ($ A3,1,
13-FIND ("", MID ($ A3,12,1) & MID ($ A3,11,1) & MID ($ A3,10,1)
& MID ($ A3,9,1) & MID ($ A3,8,1) & MID ($ A3,7,1) & MID ($ A3,6,1)
& MID ($ A3,5,1) & MID ($ A3,4,1) & MID ($ A3,3,1) & MID ($ A3,2,1))))
, RECHTS ($ A3, LEN ($ A3)))

Vergeet niet: dit is allemaal één formule, alleen maar om het eerste stuk te krijgen. De formules voor de tweede, derde krijgen, vierde en later brokken zelfs langer. Duidelijk middel van een formule kan de beste aanpak niet.

Dit laat het gebruik van een macro. Een macro kan de tekenreeks onderzoeken en gemakkelijk hak het in stukken van de gewenste lengte. Beschouw de volgende gebruiker gedefinieerde functie:

Functie SplitMe (sSentence als Koord, iPos As Integer, Optioneel ILEN = 12)
Dim sSegments () As String
Dim iSegments As Integer
Dim sRest als Koord
Dim Stemp als Koord
Dim iSpace As Integer
Dim J As Integer

iSegments = 0
sRest = sSentence
Stemp = Links (sRest, ILEN + 1)
Doe Tot Len (Stemp) <= ILEN
iSpace = 0
Voor J = Len (Stemp) Om 1 Step -1
Als Mid (Stemp, J, 1) = "" En iSpace = 0 Dan iSpace = J
Volgende J
Als iSpace> 0 Then
Stemp = Links (sRest, iSpace - 1)
sRest = Mid (sRest, iSpace + 1)
Anders
sRest = Mid (sRest, Len (Stemp) + 1)
End If
iSegments = iSegments + 1
ReDim Preserve sSegments (1 Om iSegments)
sSegments (iSegments) = Stemp
Stemp = Links (sRest, ILEN + 1)
Lus
iSegments = iSegments + 1
ReDim Preserve sSegments (1 Om iSegments)
sSegments (iSegments) = Stemp
Als iPos <= iSegments Dan
SplitMe = sSegments (iPos)
Anders
SplitMe = ""
End If
End Function

De functie neemt twee of drie parameters. De eerste parameter is de string te worden opgesplitst, de tweede is die brok je wilt van de snaar, en de parameter derde (en optioneel) is de gewenste lengte van elk blok. Als je weggaat uit de derde parameter, dan is de functie ervan uit dat u wilt elk blok met een maximum van 12 tekens lang zijn. Als voorbeeld, in de veronderstelling dat de tekst in cel A5, de volgende zal het tweede stuk terug te keren van de tekst waar elk blok is maximaal 12 tekens lang zijn:

= SplitMe (A5,2)

De functie zal goede resultaten op, mits elk woord in de tekenreeks niet langer is dan de gespecificeerde beoogde lengte voor elk blok. Als het is, dan krijg je wat vreemde resultaten, waaronder een aantal brokken die geen volledige woorden bevatten.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (3899) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003.