Scott se pregunta cómo puede hacer que Excel agregue automáticamente un guión entre cada letra en una celda determinada. Por ejemplo, si la celda A1 contiene «casa», a Scott le gustaría convertirla en «h-o-u-s-e».

Esto se puede hacer con una fórmula, pero rápidamente se vuelve difícil de manejar. Por ejemplo, la siguiente fórmula se puede usar para poner guiones entre las letras de lo que escriba en la celda 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))

Este ejemplo particular de fórmula solo funcionará en texto de hasta seis caracteres de longitud. Por lo tanto, funcionaría correctamente para «casa», pero no para «hogar». La fórmula podría alargarse pero, de nuevo, rápidamente se volvería muy larga.

Un mejor enfoque es utilizar una macro para realizar la conversión. Si desea insertar los guiones directamente en la celda, puede usar una macro como esta:

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

Esta macro está diseñada para usarse en un rango seleccionado de celdas. Simplemente seleccione las celdas que desea convertir y luego ejecute la macro. Los guiones se agregan entre cada letra de las celdas.

Si prefiere no modificar los valores de celda originales, puede crear una función definida por el usuario que haría el trabajo:

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

Para usar esta función, usaría lo siguiente en su hoja de trabajo:

=AddDashes2(A1)

Si desea asegurarse de que la función sea un poco más sólida, puede modificarla para que maneje varias palabras. En tal caso, no querrá que trate un espacio como una «letra punteada». Por ejemplo, querrá que la rutina agregue guiones a «uno dos» para que salga como «o-n-e t-w-o» en lugar de «o-n-e- -t-w-o». La siguiente variación de la función funcionará:

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: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (9634) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Adding_Dashes_between_Letters [Agregar guiones entre letras].