Divisione di testo in più celle (Microsoft Excel)
Phil ha una serie di celle che contengono testo. Parte del testo è troppo lungo, quindi deve dividerlo in più celle. Ad esempio, se una cella contiene “la volpe marrone veloce” e ha bisogno di dividere il testo in modo che nessuna parte sia più lunga di 12 caratteri, Phil può farlo facilmente. Ma vuole assicurarsi che la divisione avvenga nello spazio prima del dodicesimo carattere, piuttosto che nell’esatto dodicesimo carattere. Phil non sa come farlo.
Potresti pensare di poter utilizzare lo strumento Testo in colonne in Excel, ma non è adatto per il lavoro. Se imposti lo strumento per dividere il testo in base a delimitatori come uno spazio, ti ritroverai con una singola parola in ogni cella. Se imposti lo strumento per dividere il testo a “larghezza fissa”, non divide le parole negli spazi; si assicura solo che ogni blocco sia della dimensione specificata.
È possibile utilizzare una formula per ottenere i risultati desiderati, ma così facendo si otterrebbero formule incredibilmente lunghe. Ad esempio, se il testo troppo lungo è nella cella A3, la seguente formula potrebbe essere utilizzata per dividere la prima parte di quel testo, nello spazio prima del dodicesimo carattere:
=IF(LEN($A3)>12,IF(ISERROR(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)))) ,RIGHT($A3,LEN($A3)))
Ricorda: questa è tutta una singola formula, solo per ottenere il primo pezzo. Le formule per ottenere il secondo, il terzo, il quarto e il successivo blocco sono ancora più lunghe. Chiaramente, l’utilizzo di una formula potrebbe non essere l’approccio migliore.
Questo lascia usando una macro. Una macro può esaminare la stringa di testo e tagliarla facilmente in pezzi della lunghezza desiderata. Considera la seguente funzione definita dall’utente:
Function SplitMe(sSentence As String, iPos As Integer, Optional iLen = 12) Dim sSegments() As String Dim iSegments As Integer Dim sRest As String Dim sTemp As String Dim iSpace As Integer Dim J As Integer iSegments = 0 sRest = sSentence sTemp = Left(sRest, iLen + 1) Do Until Len(sTemp) <= iLen iSpace = 0 For J = Len(sTemp) To 1 Step -1 If Mid(sTemp, J, 1) = " " And iSpace = 0 Then iSpace = J Next J If iSpace > 0 Then sTemp = Left(sRest, iSpace - 1) sRest = Mid(sRest, iSpace + 1) Else sRest = Mid(sRest, Len(sTemp) + 1) End If iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp sTemp = Left(sRest, iLen + 1) Loop iSegments = iSegments + 1 ReDim Preserve sSegments(1 To iSegments) sSegments(iSegments) = sTemp If iPos <= iSegments Then SplitMe = sSegments(iPos) Else SplitMe = "" End If End Function
La funzione accetta due o tre parametri. Il primo parametro è la stringa da dividere, il secondo è il blocco che si desidera dalla stringa e il terzo (e facoltativo) parametro è la lunghezza desiderata di ciascun blocco. Se tralasci il terzo parametro, la funzione presuppone che ogni blocco contenga un massimo di 12 caratteri. Ad esempio, supponendo che il testo si trovi nella cella A5, quanto segue restituirà il secondo blocco dal testo in cui ogni blocco è lungo fino a 12 caratteri:
=SplitMe(A5,2)
La funzione restituirà buoni risultati, a condizione che ogni parola nella stringa di testo non sia più lunga della lunghezza di destinazione specificata per ogni blocco. Se lo è, otterrai alcuni risultati strani, inclusi alcuni blocchi che non contengono parole complete.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (3899) si applica a Microsoft Excel 97, 2000, 2002 e 2003.