Aggiunta di trattini tra le lettere (Microsoft Excel)
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: