Feroz ha una serie di valori di testo nella colonna A. Questi valori sono formattati con due diversi colori di carattere in ogni cella. (La prima parte del testo è di un colore e la seconda è di un colore diverso.) Vorrebbe dividere questi valori di testo nelle colonne B e C, in modo tale che qualsiasi cosa con il primo colore sia nella colonna B e qualsiasi cosa con il secondo colore sia nella colonna C. Nota che lo strumento Testo in colonne non lo gestirà, quindi si chiede se è possibile farlo.

Sì, si può fare. Un modo è utilizzare la funzionalità di riempimento Flash incorporata di Excel. (Questo strumento è disponibile solo in Excel 2013 o versioni successive.) Diciamo che stai iniziando con dati che assomigliano a questo:

(Vedi figura 1.)

image

Figura 1. I tuoi dati multicolori.

Nota che i miei dati di test includono, nella colonna E, alcune caratteristiche dei dati nella colonna A. A questo punto, tutto ciò che devi fare è dare a Flash Fill qualcosa con cui possa funzionare. Lo faccio spezzando manualmente il testo nelle righe 2 e 3, come mostrato qui: (Vedi figura 2.)

image

Figura 2. Configurazione degli esempi.

È importante che gli esempi che crei in B2: C3 siano esatti: dovrebbero includere tutto ciò che è di qualsiasi colore (inclusi gli spazi iniziali o finali) e sia l’ortografia che le maiuscole dovrebbero essere corrette.

Ora seleziona la cella B4 e premi Ctrl + E. Questo fa scattare Flash Fill in azione e vedrai apparire nel testo nel resto della colonna B. Fai la stessa cosa nella colonna C: seleziona la cella C4 e premi Ctrl + E. I risultati dovrebbero essere simili al seguente: (Vedere la Figura 3.)

image

Figura 3. Dopo aver utilizzato Flash, riempire entrambe le colonne.

Devo notare che il tuo successo con Flash Fill dipenderà, in gran parte, dalle caratteristiche dei dati nella colonna A. Nella maggior parte dei casi, farà la maggior parte del lavoro e potrebbe completare il compito enormemente. Potrebbero verificarsi strani casi in cui Flash Fill non è in grado di distinguere come dovrebbe separare i dati. Puoi vedere questo nella figura precedente in cui le celle A7, A9 e A11 non sono state separate correttamente. Ti consigliamo di controllare attentamente i risultati per assicurarti che abbiano senso.

Se Flash Fill non funziona per te, allora vorrai creare una macro per fare il lavoro. È possibile creare una macro che funzioni su tutte le celle nella colonna A e trascini il testo nelle colonne B e C (come le esigenze di Feroz), ma è più flessibile creare una funzione definita dall’utente che restituirà qualsiasi cosa è ricercato dalla cella. Ecco un esempio:

Function SplitColors(r As Range, Optional iWanted As Integer = 1) _   As String     Dim sTemp As String     Dim J As Integer     Dim K As Integer     Dim iColors(9) As Integer

sTemp = ""

If r.Cells.Count = 1 Then         For J = 1 To 9             iColors(J) = 0         Next J

' Determine where colors change         ' Remember there will always be at least one color         K = 1         iColors(K) = 1         For J = 2 To Len(r.Text)

If r.Characters(J,1).Font.Color <> _               r.Characters(J-1,1).Font.Color Then                 K = K + 1                 iColors(K) = J             End If         Next J

' Check if wanted color is less than total colors         If iWanted <= K Then             J = iColors(iWanted + 1)

If J = 0 Then J = Len(r.Text) + 1             J = J - iColors(iWanted)

sTemp = Mid(r.Text, iColors(iWanted), J)

End If     End If     SplitColors = sTemp End Function

La funzione SplitColors richiede un parametro (un intervallo su cui agire)

e un secondo parametro opzionale (quale colore dall’intervallo desiderato).

La funzione controlla, innanzitutto, se è stata passata una singola cella. In tal caso, determina quanti colori sono presenti in quella cella e i numeri dei caratteri in cui si verificano i cambiamenti di colore. Quindi, se il colore desiderato (passato nel secondo parametro opzionale) è inferiore al numero di colori nella cella, vengono restituiti i caratteri che utilizzano quel colore.

Quindi, ad esempio, se vuoi restituire le celle usando il primo colore nella cella A2, puoi usare uno dei seguenti nel tuo foglio di lavoro:

=SplitColors(A2, 1)

=SplitColors(A2)

La seconda chiamata funziona perché il secondo parametro è facoltativo. Se non lo includi, la funzione presuppone che tu voglia lavorare con il primo colore. Se vuoi restituire il testo usando il secondo colore nella cella, allora funzionerà quanto segue:

=SplitColors(A2, 2)

La funzione SplitColors funzionerà con un massimo di 9 colori in qualunque cella tu stia controllando. Se specifichi un secondo parametro di 9 o maggiore, ti ritroverai con un errore.

_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 (13605) si applica a Microsoft Excel 2013, 2016, 2019 e Excel in Office 365.