En este artículo, crearemos una macro para delimitar el texto de una celda a una columna verticalmente. Podemos delimitar el texto de la celda en función del delimitador. El delimitador puede ser una coma, un espacio, una barra invertida, etc.

Para explicar el funcionamiento de la macro, hemos tomado la URL como texto de muestra en la celda A10. La macro se puede ejecutar haciendo clic en el botón «Enviar».

ArrowSampleData

Después de ejecutar la macro, devolverá la salida en la siguiente columna.

El valor del texto en la celda se separa en múltiples subcadenas en múltiples celdas en la segunda columna.

ArrowAfterRunningMacro

Explicación lógica

Hemos creado una macro «texttocolumns» que realiza dos tareas.

En primer lugar, delimita la cadena en A10 a múltiples subcadenas, según el delimitador. En este ejemplo, usamos guión (-) como delimitador. En segundo lugar, atraviesa subcadenas generadas de varias columnas a una sola columna.

Explicación del código

Rng.texttocolumns Destino: = Rng.Offset (0, 1), DataType: = xlDelimited, _ TextQualifier: = xlDoubleQuote, ConsecutiveDelimiter: = True, Other: = True, OtherChar _: = «-«

El código anterior se usa para delimitar la cadena en el rango «Rng». Destino especifica el rango de ubicación donde aparecerá la salida. DataType especifica el tipo de delimitador utilizado. TextQualifier especifica el carácter que se utiliza para el calificador de texto. OtherChar especifica el carácter utilizado como delimitador.

Siga a continuación el código

Sub texttocolumns()

'Declaring variables

Dim StartRow, i, LastCol As Long

Dim Rng As Range

'disabling the display alerts

Application.DisplayAlerts = False

'Initializing the variable

StartRow = 10

Set Rng = Range("A10")

'Separting the text based on the delimiter

Rng.texttocolumns Destination:=Rng.Offset(0, 1), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Other:=True, OtherChar _

:="-"

'Finding the column number of cell containing the last string after delimiting

LastCol = Rng.End(xlToRight).Column

'arranging the text in columns to rows

For i = 2 To LastCol

Cells(10, i).Cut Cells(StartRow, 2)

StartRow = StartRow + 1

Next i

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]