Scott si chiede come può fare in modo che Excel aggiunga automaticamente un trattino tra ogni lettera in una determinata cella. Ad esempio, se la cella A1 contiene “casa”, Scott vorrebbe convertirla in “h-o-u-s-e”.

Questo può essere fatto con una formula, ma diventa rapidamente ingombrante. Ad esempio, la seguente formula può essere utilizzata per inserire trattini tra le lettere di qualunque cosa tu digiti nella cella A1:

=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-"

& RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-"

& MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1)

& "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))

Questo particolare esempio di formula funzionerà solo su un testo di lunghezza massima di sei caratteri. Quindi, funzionerebbe correttamente per “casa”, ma non per “famiglia”. La formula potrebbe essere allungata ma, di nuovo, diventerebbe rapidamente molto lunga.

Un approccio migliore consiste nell’utilizzare una macro per eseguire la conversione. Se vuoi inserire i trattini direttamente nella cella, potresti usare una macro come questa:

Sub AddDashes1()

Dim Cell As Range     Dim sTemp As String     Dim C As Integer

For Each Cell In Selection         sTemp = ""

For C = 1 To Len(Cell)

sTemp = sTemp + Mid(Cell, C, 1) + "-"

Next         Cell.Value = Left(sTemp, Len(sTemp) - 1)

Next End Sub

Questa macro è progettata per essere utilizzata su un intervallo selezionato di celle. Seleziona semplicemente le celle che desideri convertire e quindi esegui la macro. I trattini vengono aggiunti tra ogni lettera nelle celle.

Se preferisci non modificare i valori della cella originale, potresti creare una funzione definita dall’utente che farebbe il lavoro:

Function AddDashes2(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp + Mid(Src, C, 1) + "-"

Next     AddDashes2 = Left(sTemp, Len(sTemp) - 1)

End Function

Per usare questa funzione dovresti usare quanto segue nel tuo foglio di lavoro:

=AddDashes2(A1)

Se vuoi assicurarti che la funzione sia un po ‘più robusta, puoi modificarla in modo che gestisca più parole. In tal caso, non vorresti che trattasse uno spazio come una “lettera dashable”. Ad esempio, vorresti che la routine aggiungesse trattini a “uno due” in modo che risulti “o-n-e t-w-o” invece di “o-n-e- -t-w-o”. La seguente variazione sulla funzione farà il trucco:

Function AddDashes3(Src As String) As String     Dim sTemp As String     Dim C As Integer

Application.Volatile     sTemp = ""

For C = 1 To Len(Src)

sTemp = sTemp + Mid(Src, C, 1)

If Mid(Src, C, 1) <> " " And           Mid(Src, C + 1, 1) <> " " And           C < Len(Src) Then             sTemp = sTemp + "-"

End If     Next     AddDashes3 = sTemp End Function

_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 (9633) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: