VBA – Texto a columnas

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 4, 2022

Este tutorial le mostrará cómo convertir una cadena de texto de una sola celda a múltiples columnas utilizando el método Range.TextToColumns en VBA

Texto a Columnas

El método Range.TextToColumns en VBA es una poderosa herramienta para limpiar datos que han sido importados desde archivos de texto o csv, por ejemplo. Considere la siguiente hoja de trabajo. vba texttocol quotes Los datos han llegado a Excel todos en una columna, y están separados por comillas. Puede utilizar el método Range.TextToColumns para separar estos datos en columnas.

Sintaxis de TextToColumns

expresión.TextToColumns(Destino, TipoDeDatos, CalificadorDeTexto, DelimitadorConsecutivo, Tabulador, Punto y coma, Coma, Espacio, Otro, OtraCaracterística, InformaciónDeCampo, SeparadorDecimal, SeparadorDeMiles, NúmerosMenosAl Final)

separar texto a columnas

Expresión

Este es el rango de celdas que desea dividir – por ejemplo: Range(«A1:A10»). Todos los argumentos del método TextToColumns son opcionales (tienen corchetes alrededor).

Destino

Donde quiere que se ponga el resultado – a menudo anula los datos y los divide en la misma ubicación.

Tipo de datos

El tipo de análisis de texto que está utilizando – puede ser xlDelimited (por defecto si se omite), o xlFixedWidth.

Calificador de texto

Si tiene comillas (simples o dobles) alrededor de cada campo del texto que está dividiendo, debe indicar si son simples o dobles.

Delimitador Consecutivo

Esto es verdadero o falso y le dice a VBA que considere 2 de los mismos delimitadores juntos como si fuera 1 delimitador.

Tabulación:

Esto es Verdadero o Falso , el Predeterminado es Falso – esto le dice a VBA que los datos están delimitados por un Tabulador.

Punto y coma

Esto es Verdadero o Falso, el Predeterminado es Falso – esto le dice a VBA que los datos están delimitados por un Punto y coma.

Espacio

Esto es Verdadero o Falso, por defecto es Falso – esto le dice a VBA que los datos están delimitados por un Espacio.

Otro

Esto puede ser Verdadero o Falso , el valor por defecto es Falso. Si lo establece como Verdadero, entonces el siguiente argumento, OtherChar necesita ser especificado.

OtherChar

Es el carácter con el que se separa el texto (por ejemplo, ^ o |).

FieldInfo

Es una matriz que contiene información sobre el tipo de datos que se separan. El primer valor de la matriz indica el número de columna de los datos, y el segundo valor indica la constante que se va a utilizar para representar el tipo de datos que se requiere. Un ejemplo para 5 columnas con tipos de datos de texto, números y fechas podría ser: Array(Array(1, xlTextFormat), Array(2, xlTextFormat), Array(3, xlGeneralFormat), Array(4, xlGeneralFormat), Array(5, xlMDYFormat)) Otra forma de establecer esto es: Array(Array(1, 2), Array(2, 2), Array(3, 1), Array(4, 1), Array(5, 3)) Los números de la segunda columna son los valores de las constantes donde la constante xlTextFormat tiene un valor de 2, la xlGeneralFormat (por defecto) tiene un valor de 1 y la xlMDYFormat tiene un valor de 3.

DecimalSeparator

Puede especificar el separador decimal que VBA debe utilizar si hay números en los datos. Si se omite, utilizará la configuración del sistema, que suele ser un punto.

ThousandsSeparator

Puede especificar el separador de miles que VBA debe utilizar si hay números en los datos. Si se omite, se utilizará la configuración del sistema, que suele ser una coma.

TrailingMinusNumbers

Este argumento es en gran parte para la compatibilidad de los datos que se generan a partir de sistemas más antiguos donde un signo menos era a menudo después del número y no antes. Debe establecerlo como True si los números negativos tienen el signo menos detrás de ellos. El valor por defecto es Falso.

Convertir texto en columnas

El siguiente procedimiento convertirá los datos de Excel en columnas.

Sub TextoAColumnas()
   Range("A1:A25").TextToColumns _
   Destination:=Range("A1:A25"), _
   DataType:=xlDelimited, _
   TextQualifier:=xlDoubleQuote, _
   ConsecutiveDelimiter:=True, _
   Tab:=False, _
   Semicolon:=False, _
   Comma:=False, _
   Space:=True, _
   Other:=False, _
   FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), _
   DecimalSeparator:=",", _
   ThousandsSeparator:=".", _
   TrailingMinusNumbers:=True
End Sub

En el procedimiento anterior hemos rellenado todos los parámetros. Sin embargo, muchos de los parámetros están establecidos en falso o en la configuración por defecto y no son necesarios. A continuación se presenta una versión más limpia del procedimiento anterior. Es necesario utilizar los nombres de los parámetros para indicar qué parámetros estamos utilizando.

Sub TextoaColumnas2()
  Range("A1:A25").TextToColumns _
  DataType:=xlDelimited, _
  TextQualifier:=xlDoubleQuote, _
  ConsecutiveDelimiter:=True, _
  Space:=True
End Sub

Sólo hay 4 parámetros que son realmente necesarios – los datos están delimitados por una comilla doble, quiere que las comillas consecutivas sean tratadas como una sola y los datos están separados por un espacio.

Para una línea de código aún más rápida, podríamos omitir los nombres de los parámetros, pero entonces tendríamos que poner comas para guardar el lugar del parámetro. Sólo necesitas poner información hasta el último parámetro que estás usando – en este caso el espacio que separa los datos que es el octavo parámetro.

Sub TextoEnColumnas3()
   Range("A1:A25").TextToColumns , xlDelimited, xlDoubleQuote, True, , , True
End Sub

Una vez que ejecute cualquiera de los procedimientos anteriores, los datos se separarán según el gráfico siguiente. vba texttocol split

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples